首先,我可以使用带有 twitter4j-core jar 版本 2.1.11 的 twitter 按钮登录,并能够检索访问令牌和密码。但是在 twitter 停止 API 版本 1 的功能后,我添加了新的 twitter4j-core jar 版本 3.0.3 和 API 版本 1.1。现在我无法检索访问令牌和访问密钥。
这是我存储访问令牌和访问密码的数据库方法。
public static void save(Context context, final OAuthConsumer oAuthConsumer) {
SharedPreference.storeValue(OAuth.OAUTH_TOKEN, oAuthConsumer.getToken(), context);
SharedPreference.storeValue(OAuth.OAUTH_TOKEN_SECRET, oAuthConsumer.getTokenSecret(), context);
}
我在其中检索存储值的另一种数据库方法:
public static AccessToken retrieveStoredAccessToken(Context context)
{
String token = SharedPreference.getValueFromStore(OAuth.OAUTH_TOKEN , context);
String secret = SharedPreference.getValueFromStore(OAuth.OAUTH_TOKEN_SECRET, context);
return new AccessToken(token, secret);
}
现在,当用户单击登录按钮时,它将重定向到方法 isAuthenticated() 我在其中检索存储的访问令牌和秘密
public static boolean isAuthenticated(Context context)
{
try
{
AccessToken accessToken = Database.retrieveStoredAccessToken(context); // String token and secret is received null from databse
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET);
twitter.setOAuthAccessToken(accessToken);
twitter.getAccountSettings();
return true;
}
catch (TwitterException e)
{
System.out.println("Twitter Authenticated : false");
return false;
}
catch(Exception e)
{
System.out.println("Twitter Authenticated : false");
return false;
}
}
访问令牌返回 Null 异常。我可以使用 twitter 登录,但由于访问令牌和访问密钥引发了 null 异常,因此未存储会话。
以下jar文件使用
1)signpost-commonshttp4-1.2.1.1.jar 2)signpost-core-1.2.1.1.jar 3)twitter4j-core-3.0.3.jar