Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Twitter4J+;Android:身份验证挑战为空异常_Android_Twitter_Oauth_Twitter Oauth_Twitter4j - Fatal编程技术网

Twitter4J+;Android:身份验证挑战为空异常

Twitter4J+;Android:身份验证挑战为空异常,android,twitter,oauth,twitter-oauth,twitter4j,Android,Twitter,Oauth,Twitter Oauth,Twitter4j,我正在使用Twitter4J库进行OAuth身份验证,但即使在它打开Twitter登录页面之前,我也会收到“身份验证挑战为空异常” 这是代码 Twitter twitter = new TwitterFactory().getInstance(); try { twitter.setOAuthConsumer(Startup.TWITTER_KEY, Startup.TWITTER_SECRET); String callbackURL

我正在使用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):已收到 身份验证挑战是 有关讨论可在 互联网地址:E/Home(4393): 或E/Home(4393): E/Home(4393): TwitterException{exceptionCode=[6c607809-0f1d8134 cab4c0ac-d492a113],状态代码=-1, retryAfter=0,rateLimitStatus=null, version=2.2.2}E/Home(4393):位于 twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:204) 东/家(4393):在 twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65) 东/家(4393):在 twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:102) 东/家(4393):在 twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:108) 东/家(4393):在 twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:271) 东/家(4393):在 com.sharj.trafik.view.Home.askOAuth(Home.java:157) 东/家(4393):在 com.sharj.trafik.view.Home.access$0(Home.java:143) 东/家(4393):在 com.sharj.trafik.view.Home$3.onClick(Home.java:110) 东/家(4393):在 android.view.view.performClick(view.java:2485) 东/家(4393):在 view.view$PerformClick.run(view.java:9080) 东/家(4393):在 handleCallback(Handler.java:587) 东/家(4393):在 android.os.Handler.dispatchMessage(Handler.java:92) 东/家(4393):在 Looper.loop(Looper.java:130) 东/家(4393):在 main(ActivityThread.java:3683) 东/家(4393):在 java.lang.reflect.Method.Invokenactive(本机) 方法)E/Home(4393):在 java.lang.reflect.Method.invoke(Method.java:507) 东/家(4393):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 东/家(4393):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 东/家(4393):在 dalvik.system.NativeStart.main(本机) 方法)E/Home(4393):由以下原因引起: java.io.IOException:已收到 身份验证质询为空 东/家(4393):在 org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:1153) 东/家(4393):在 org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:1095) 东/家(4393):在 org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieverresponse(HttpURLConnectionImpl.java:1048) 东/家(4393):在 org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:726) 东/家(4393):在 org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:121) 东/家(4393):在 twitter4j.internal.http.HttpResponseImpl.(HttpResponseImpl.java:35) 东/家(4393):在 twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:168) E/Home(4393):。。。还有18个

它包含以下链接,但谷歌在这方面没有太多内容


我也有同样的问题。结果表明,如果oAuth调用上的时间戳不正确,服务器将返回401状态错误,这在Android设备上会导致抛出“Received authentication challenge is null”异常。出现此问题的所有设备的时间都不正确,修复时间解决了问题


也许这也是你的问题?

我也有同样的问题。首先,我是在执行
getOAuthRequestToken()
时得到它的。我的消费者密钥和消费者机密来自
.properties
文件,结果它们有一个尾随空格,因此被Twitter的API视为无效


之后,在执行
getOAuthAccessToken()
时,我也得到了相同的401。在这里我没有正确地持久化和重新构建
RequestToken
对象。

修复:即使在我确定了日期和时间之后,我也有这个异常,但当我在logcat中查看Twitterj发送给服务器的参数时,时间戳仍然是错误的-因此我强制关闭应用程序,在异常消失之后。

我也意外地发现这个问题。在另一个线程中检查我的解决方案

当我连续调用以下两次时,发生了这种情况:

 requestToken = twitter.getOAuthRequestToken();
    return requestToken.getAuthorizationURL();

我有同样的问题,并通过使用异步任务修复了它 正如我在下面的链接中回答的那样

完整堆栈跟踪会很有帮助。我遇到了同样的问题:您解决过这个问题吗?不正确的时间对我没有帮助。不,我无法解决它,所以我暂时放弃了集成。我很快会再试一次。我也有同样的问题。如何修复它????我的日期时间和时区是正确的。我面临这个问题,问题是时间。我的模拟器时间不正确oAuth协议的一部分涉及在每个命令中发送一个时间戳(这可能由您正在使用的类处理)。服务器将时间戳与其当前时间进行比较,如果时间戳不在某个窗口内(对于我使用的服务器,时间戳为300秒),它将以401错误拒绝该命令。不幸的是,Android不能很好地处理401错误(这是一个bug IMHO),并抛出您看到的异常。如果你设置的时间正确,问题就会消失。(请注意,任何其他oAuth错误也将生成401错误)。这个答案肯定需要更多的可见性!仍然面临同样的问题,请帮我解决同样的问题。。。这两次失败都是由于用户造成的