Android-twitter4j例外 - 未发现身份验证挑战
我已将Twitter
集成到我的应用程序中(使用OAuth
和twitter4j
库)以代表用户更新用户帐户的状态。这很好。Android-twitter4j例外 - 未发现身份验证挑战
在更新状态之前,我检查Shared Preferences
是否存储AccessToken
。如果可用,即用户已登录,则更新状态,否则用户未登录,因此显示用户登录的twitter页面。
的问题是,如果用户登录后因此我Shared Preferences
,现在有AccessToken
,如果用户撤消应用程序的权限,我尝试后状态,那么它给这个意外事件或错误。
我怎么会知道该用户已撤销的许可,因此我要问的授权?
编辑:我来了解如何处理未经授权的访问,我处理了它。但是这个例外仍然存在。
我解决了这个问题。问题在于,我正在测试用户未授权应用程序时的功能。而且我未经授权使用我在dev.twitter.com上创建应用程序的twitter帐户的应用程序。这样做使得我的accesstoken被存储在共享首选项中,并因此在我的代码中,当我从共享首选项中获取并使用它时,我用来获取异常。
解决方案是在dev.twitter.com创建的应用程序中重新创建一个accesstoken。在我的代码中,我添加了这个条件:
catch (TwitterException e) {
if (e.getStatusCode() == -1) {
// This is the case when the developer who created the application has revoked the application permission.
// In this case we need to remove stored access token as it is no longer valid.
// Logging in again will fetch newer accesstoken and will solve the problem.
logoutFromTwitter();
loginToTwitter();
}
}
这可能听起来很奇怪,但尝试自动设置您的时间/日期更新。根据我以前的经验,这是问题所在。当我设置这个和电话时间同步后,一切工作正常。
那就试试这个: -
// ConfigurationBuilder
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(twitterConsumerKey);
builder.setOAuthConsumerSecret(twitterConsumerSecret);
// Access Token from sharedPreference
String access_token = mSharedPreferences.getString(TwitterConstants.PREF_KEY_OAUTH_TOKEN, "");
// Access Token Secret from sharedPreference
String access_token_secret = mSharedPreferences.getString(TwitterConstants.PREF_KEY_OAUTH_SECRET, "");
AccessToken accessToken = new AccessToken(access_token, access_token_secret);
twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
// Getting user details from twitter
// For now i am getting his name only
long userID = accessToken.getUserId();
User user = twitter.showUser(userID);
String username = user.getName() + " (" + user.getScreenName() + ")";
它已被设置为自动更新。 – Geek
这是一个正确的答案? (-1) – BlaShadow
@BlaShadow是的,这是问问题的正确答案。这是重要的。 – Geek
这不是来自twitter4j的bug /问题,你是bug。这怎么能帮助任何人? – BlaShadow