如何解决Twitter4J + Android:身份验证挑战为空异常
|| 我正在使用Twitter4J库进行OAuth身份验证,但是即使在打开Twitter登录页面之前,我也会收到“身份验证挑战为空异常”。 这是代码。 Twitter twitter = new TwitterFactory().getInstance();
try
{
twitter.setOAuthConsumer(Startup.TWITTER_KEY,Startup.TWITTER_SECRET);
String callbackURL = \"twitter-client:///\";
RequestToken rToken = twitter.getOAuthRequestToken(callbackURL);
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse(rToken.getAuthenticationURL())));
}
catch(IllegalStateException e)
{
// access token is already available,or consumer key/secret is not set.
if(!twitter.getAuthorization().isEnabled()){
System.out.println(\"OAuth consumer key/secret is not set.\");
System.exit(-1);
}
}
catch(Exception e)
{
Toast.makeText(Home.this,\"Network Host not responding: \"+e.getMessage(),Toast.LENGTH_SHORT).show(); //This exception.
}
例外:
E / Home(4393):已收到
身份验证质询为空
E / Home(4393):已收到
身份验证挑战是
null有关的讨论可以在
互联网位于:E / Home(4393):
http://www.google.co.jp/search?q=6c607809
或E / Home(4393):
http://www.google.co.jp/search?q=0f1d8134
E / Home(4393):
TwitterException {exceptionCode = [6c607809-0f1d8134
cab4c0ac-d492a113],statusCode = -1,
retryAfter = 0,rateLimitStatus = null,
版本= 2.2.2} E / Home(4393):在
twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:204)
E / Home(4393):位于
twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65)
E / Home(4393):位于
twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:102)
E / Home(4393):位于
twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:108)
E / Home(4393):位于
twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:271)
E / Home(4393):位于
com.sharj.trafik.view.Home.askOAuth(Home.java:157)
E / Home(4393):位于
com.sharj.trafik.view.Home.access $ 0(Home.java:143)
E / Home(4393):位于
com.sharj.trafik.view.Home $ 3.onClick(Home.java:110)
E / Home(4393):位于
android.view.View.performClick(View.java:2485)
E / Home(4393):位于
android.view.View $ PerformClick.run(View.java:9080)
E / Home(4393):位于
android.os.Handler.handleCallback(Handler.java:587)
E / Home(4393):位于
android.os.Handler.dispatchMessage(Handler.java:92)
E / Home(4393):位于
android.os.Looper.loop(Looper.java:130)
E / Home(4393):位于
android.app.ActivityThread.main(ActivityThread.java:3683)
E / Home(4393):位于
java.lang.reflect.Method.invokeNative(本机
方法)E / Home(4393):at
java.lang.reflect.Method.invoke(Method.java:507)
E / Home(4393):位于
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
E / Home(4393):位于
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E / Home(4393):位于
dalvik.system.NativeStart.main(本机
方法)E / Home(4393):原因:
java.io.IOException:收到
身份验证质询为空
E / Home(4393):位于
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:1153)
E / Home(4393):位于
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:1095)
E / Home(4393):位于
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1048)
E / Home(4393):位于
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:726)
E / Home(4393):位于
org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:121)
E / Home(4393):位于
twitter4j.internal.http.HttpResponseImpl。(HttpResponseImpl.java:35)
E / Home(4393):位于
twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:168)
E / Home(4393):...还有18个
它包含以下链接,但是Google对此没有太多内容。
http://www.google.co.jp/search?q=6c607809
http://www.google.co.jp/search?q=0f1d8134
解决方法
我有同样的问题。原来,如果oAuth调用上的时间戳不正确,则服务器将返回401状态错误,该错误在Android设备上导致引发“接收到的身份验证质询为空”异常。所有出现此问题的设备的时间都不正确,解决时间问题可以解决此问题。
也许这也是您的问题?
,我也有同样的问题。首先我在做ѭ1时得到它。我的消费者密钥和消费者秘密来自
.properties
文件,结果发现它们具有尾随空格,因此被Twitter的API视为无效。
之后,我在做getOAuthAccessToken()
时也得到相同的401。在这里,我没有正确持久化并重建RequestToken
对象。
,当我连续两次调用以下命令时,这发生在我身上:
requestToken = twitter.getOAuthRequestToken();
return requestToken.getAuthorizationURL();
,修正:即使在我确定日期和时间之后,我仍然有这个异常,但是当我在logcat中查看twittherj发送到服务器的参数时,时间戳仍然是错误的-因此我强制关闭了该应用程序,并且该异常消失了。
,我也偶然发现了这个问题。在另一个线程中检查我的解决方案Android:Twitter4J异常(收到的身份验证挑战为空)
,我有同样的问题,并通过使用异步任务解决了
正如我在以下链接中回答的
Android Twitter异常错误:(
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。