android - 使用 Android AccountManager Twitter 凭据创建 Twitter4J AccessToken

标签 android twitter twitter-oauth twitter4j accountmanager

我使用以下代码从 Android AccountManager 获取 Twitter 凭据:

AccountManager am = AccountManager.get(this);
Account account = am.getAccountsByType("com.twitter.android.auth.login")[0];
am.invalidateAuthToken("com.twitter.android.auth.login", null);
am.getAuthToken(account, "com.twitter.android.oauth.token", null, this, createCallback(TOKEN), null);
am.getAuthToken(account, "com.twitter.android.oauth.token.secret", null, this, createCallback(TOKEN_SECRET), null);

我正在使用回调返回的值来设置 Twitter4J Twitter 对象:

Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
twitter.setOAuthAccessToken(new AccessToken(token, tokenSecret));
User user = twitter.verifyCredentials();

但是在调用verifyCredentials()时会产生如下异常:

Exception connecting to twitter
    Received authentication challenge is null
    Relevant discussions can be found on the Internet at:
    http://www.google.co.jp/search?q=6f0f59ca or
    http://www.google.co.jp/search?q=200bae40
    TwitterException{exceptionCode=[6f0f59ca-200bae40 1de2170b-e16a1586], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.2}
    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:192)
    at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
    at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:89)
    at twitter4j.TwitterBaseImpl.fillInIDAndScreenName(TwitterBaseImpl.java:126)
    at twitter4j.TwitterImpl.verifyCredentials(TwitterImpl.java:578)

我尝试在请求 token 之前在 AccountManager 上调用 invalidateAuthToken,但这没有任何区别。

将 token 和 token secret 值设置为 Twitter 为我的应用程序提供的值时,我可以成功调用 verifyCredentials,但我需要能够使用当前设备用户的 Twitter 凭据。

是否需要任何其他步骤来使用从 AccountManager 返回的 token 和 token secret 值来设置 AccessToken?

这是在运行 Android 2.3.5 的 HTC Evo 上测试的。

最佳答案

检查您手机上的时钟/时间是否正确。

问题是 Twitter 服务器时间与您的手机时间不匹配。

关于android - 使用 Android AccountManager Twitter 凭据创建 Twitter4J AccessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771490/

相关文章:

android - 用于简短交互的帧动画或电影文件 "movie"Android 应用程序

android - 广播接收器 onReceive() 被多次调用

php - 通过 PHP 或 Android 处理 SQLite 时是否需要更新后读取然后验证更新数据?

javascript - 使用推文按钮时与 dpi CSS 使用相关的控制台通知

twitter - 在 Twitter 上共享带有查询字符串的 URL

android - 使用消息和使用 Twitter Auth 在 Twitter 上发布图像的简单技术是什么?

android - 可扩展字符串错误

javascript - 推文按钮在 IE7 中无法正确显示,但在 mozilla、chrome 和 IE 8 中工作正常

java - 使用 Twitter-hbc 在 Java 中读取推文 - IOException

java - Twitter OAuth getRequestToken 失败