我将 twitter 集成到我的 android 应用程序中。我使用了这个很棒的教程和这个 twitter 集成源。
我从三月份开始开发安卓,所以我不是专业人士或其他什么,但我知道一件事。
如果您为 Android 2.3+ 和 Android 4+ 编写运行良好的代码,那么总会有 Android (3+) 的平板电脑版本 Os 通常会搞砸您的工作。我见过很多这样的情况...
我根据教程制作的 twitter 集成在 Android 2.3 和 4 上运行良好,但在 Android 3.2(Samsung Galaxy Tab)上做了一些错误的事情
这很奇怪,因为问题出在OAUth 检索请求令牌上,我不知道为什么......
当然,我在不同的 Android 上运行了相同的代码。在 2.3 上,OAuth 一切正常,推特登录,我可以发推文,从 3.1 开始出现错误,这里是 logcat:
06-19 02:15:21.760: W/DefaultRequestDirector(13255): Authentication error: Unable to respond to any of these challenges: {}
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): Error during OAUth retrieve request token
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): oauth.signpost.exception.OAuthNotAuthorizedException: Authorization failed (server replied with a 401). This can happen if the consumer key was not correct or the signatures did not match.
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at oauth.signpost.AbstractOAuthProvider.handleUnexpectedResponse(AbstractOAuthProvider.java:239)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:189)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at com.KeySoft.TwitterIntegration.OAuthRequestTokenTask.doInBackground(OAuthRequestTokenTask.java:70)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at com.KeySoft.TwitterIntegration.OAuthRequestTokenTask.doInBackground(OAuthRequestTokenTask.java:1)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at android.os.AsyncTask$2.call(AsyncTask.java:252)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
06-19 02:15:21.760: E/com.KeySoft.TwitterIntegration.OAuthRequestTokenTask(13255): at java.lang.Thread.run(Thread.java:1020)
所以请有人向我解释一下,为什么 Android 3+ 总是做与以前和未来版本不同的事情,因为在我看来这是一个身份验证问题,如果我运行相同的代码,为什么我不能检索请求令牌,打电话具有相同密钥和所需签名的相同 url-s。