public class TwitterActivity extends Activity
{
private Twitter twitter;
private OAuthProvider provider;
private CommonsHttpOAuthConsumer consumer;
String CONSUMER_KEY = "abcdefgh";
String CONSUMER_SECRET = "abcdefgh";
String CALLBACK = "twitterapp://connect";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
askOAuth();
}
private void askOAuth() {
try {
consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
provider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token",
"http://twitter.com/oauth/access_token",
"http://twitter.com/oauth/authorize");
String authUrl = provider.retrieveRequestToken(consumer, CALLBACK);
Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show();
this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
} catch (Exception e) {
Log.e(APP, e.getMessage());
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null && uri.toString().startsWith(CALLBACK)) {
String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);
try {
// this will populate token and token_secret in consumer
provider.retrieveAccessToken(consumer, verifier);
// TODO: you might want to store token and token_secret in you app settings!!!!!!!!
AccessToken a = new AccessToken(consumer.getToken(), consumer.getTokenSecret());
// initialize Twitter4J
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
twitter.setOAuthAccessToken(a);
// create a tweet
Date d = new Date(System.currentTimeMillis());
String tweet = "#OAuth working! " + d.toLocaleString();
// send the tweet
twitter.updateStatus(tweet);
} catch (Exception e) {
Log.e(APP, e.getMessage());
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
}
P.S.: I have used these api's
[1]: https://github.com/punitmg/Twitter-Test-App
[2]: https://github.com/grantland/twitter-android-sdk
[3]: https://github.com/yusuke/twitter4j/
通过使用所有这些API,我能够成功发送推文。但不幸的是,下面提到的2个屏幕出现在以上所有3个案例中..
我想要的就是在我的推文完成后完成()或关闭以下两个屏幕。
So .... plz guide me if i was wrong ...
答案 0 :(得分:0)
您需要第二次强制登录才能解决此问题,
所以只需在您的Twitter授权网址中添加 force_login = true 。
我的意思是只更改 TwitterApp.java 类中的以下代码行(如果您有一个具有不同名称的类文件,则使用 DefaultOAuthProvider 在您的项目中搜索)< / p>
mHttpOauthprovider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token",
"http://twitter.com/oauth/access_token",
"http://twitter.com/oauth/authorize?force_login=true");
添加 force_login = true 后,将解决webview加载问题,但每次需要输入登录名和密码时。