Я искал через Интернет. Я нашел много решений для отправки твитов, и я понял, что с использованием намерений это намного лучше.Отправка твитов в фоновом режиме приложения
String tweetUrl = "https://twitter.com/intent/tweet?text=PUT TEXT HERE &url="+ "https://www.google.com";
Uri uri = Uri.parse(tweetUrl);
startActivity(new Intent(Intent.ACTION_VIEW, uri));
Но я просто хочу отправить твиты в фоновом режиме. Если кто-нибудь сделал это, пожалуйста, поделитесь со мной. мое требование - отправить твиты в фоновом режиме, когда сообщение опубликовано в моем приложении на основе социальных сетей. Я могу сделать это в случае с facebook, но все еще борюсь с Twitter.
Здесь ниже мой код, чтобы взять проверку подлинности Twitter Применение: -
class twAsyn extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
askOAuth();
return null;
}
}
private void checkForSavedLogin() {
// Get Access Token and persist it
new accessUser().execute();
}
class accessUser extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
AccessToken a = getAccessToken();
// storeAccessToken(a);
loggedIUser.setTwSharing(true);
if (a!=null) {
// initialize Twitter4J
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
twitter.setOAuthAccessToken(a);
((TwitterApplication)getApplication()).setTwitter(twitter);
final User user;
finish();
}
return null;
}
}
private AccessToken getAccessToken() {
SharedPreferences settings = getSharedPreferences(Constants.PREFS_NAME, MODE_PRIVATE);
String token = settings.getString("accessTokenToken", "");
String tokenSecret = settings.getString("accessTokenSecret", "");
if (token!=null && tokenSecret!=null && !"".equals(tokenSecret) && !"".equals(token)){
return new AccessToken(token, tokenSecret);
}
return null;
}
private void getConsumerProvider() {
OAuthProvider p = ((TwitterApplication)getApplication()).getProvider();
if (p!=null){
provider = p;
}
CommonsHttpOAuthConsumer c = ((TwitterApplication)getApplication()).getConsumer();
if (c!=null){
consumer = c;
}
}
private void setConsumerProvider() {
if (provider!=null){
((TwitterApplication)getApplication()).setProvider(provider);
}
if (consumer!=null){
((TwitterApplication)getApplication()).setConsumer(consumer);
}
}
private void storeAccessToken(AccessToken a) {
SharedPreferences settings = getSharedPreferences(Constants.PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("accessTokenToken", a.getToken());
editor.putString("accessTokenSecret", a.getTokenSecret());
editor.commit();
}
@Override
protected void onResume() {
super.onResume();
System.out.println("RESUMING!!");
if (this.getIntent()!=null && this.getIntent().getData()!=null){
Uri uri = this.getIntent().getData();
new twUserAcces(uri).execute();
}
}
class twUserAcces extends AsyncTask<String, Void, String>{
Uri uri;
String verifier;
public twUserAcces(Uri uri) {
// TODO Auto-generated constructor stub
this.uri = uri;
if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {
verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
}
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
checkForSavedLogin();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
try {
// this will populate token and token_secret in consumer
provider.retrieveAccessToken(consumer, verifier);
// Get Access Token and persist it
System.out.println(">>>>>>>> accesstoker "+consumer.getToken());
System.out.println(">>>>>>>> accesstoker "+consumer.getTokenSecret());
AccessToken a = new AccessToken(consumer.getToken(), consumer.getTokenSecret());
storeAccessToken(a);
// initialize Twitter4J
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
twitter.setOAuthAccessToken(a);
((TwitterApplication)getApplication()).setTwitter(twitter);
Log.e("Login>>>>>>>>>>>>>>>>>>>>>.", "Twitter Initialised");
User user = null;
long h=twitter.getId();
user = (User)twitter.getUserLists(0);
finish();
} catch (Exception e) {
//Log.e(APP, e.getMessage());
e.printStackTrace();
System.out.println("e.getMessage()=="+e.getMessage());
//Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
return null;
}
}
private void askOAuth() {
try {
consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
provider = new CommonsHttpOAuthProvider("https://twitter.com/oauth/request_token", "https://twitter.com/oauth/access_token", "https://twitter.com/oauth/authorize");
String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);
//Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show();
setConsumerProvider();
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
Вам нужно создать приложение и маркер доступа в этом приложении. Если вы хотите отправить некоторые твиты в свою учетную запись, вам необходимо использовать update_status.json с идентификатором приложения, секретным и одним токеном доступа. Вы можете сделать свои тесты здесь https://apigee.com/console/twitter. Также см. Здесь для отправки твита, используя java http://twitter4j.org/en/code-examples.html#updatingStatus –