14

OAuth 認証に Twitter4J ライブラリを使用していますが、Twitter のログイン ページを開く前に「Authentication Challenge is Null Exception」が表示されます。

これがコードです。

    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): 受信した認証チャレンジは null 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/ホーム (4393): TwitterException{exceptionCode=[6c607809-0f1d8134 cab4c0ac-d492a113], statusCode=-1, retryAfter=0, rateLimitStatus=null, version=2.2.2} E/ホーム (4393): twitter4j.internal .http.HttpClientImpl.request(HttpClientImpl.java:204) E/ホーム (4393): twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65) E/ホーム (4393): twitter4j.internal.http で.HttpClientWrapper.post(HttpClientWrapper.java:102) E/ホーム (4393): twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:108) E/ホーム (4393): twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java) :271) E/ホーム (4393): com.sharj.trafik.view.Home.askOAuth(Home.java:157) E/ホーム (4393): com.sharj.trafik.view.Home.access$0(ホーム.java:143) E/ホーム (4393): com.sharj.trafik.view.Home$3.onClick(Home.java:110) E/ホーム (4393): android.view.View.performClick(View.java:2485) ) E/ホーム (4393): android.view.View$PerformClick.run(View.java:9080) で E/ホーム (4393): android.os.Handler.handleCallback(Handler.java:587) で E/ホーム( 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/ホーム (4393): java.lang.reflect.Method.invokeNative(Native Method) で E/ホーム (4393): java.lang.reflect.Method で。呼び出し (Method.java:507) E/ホーム (4393): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) E/ホーム (4393):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) E/Home (4393): dalvik.system.NativeStart.main(Native Method) E/Home (4393): 原因: java. io.IOException: Received authentication challenge is null E/Home ( 4393): at 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/ホーム ( 4393): org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:121) で E/ホーム ( 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

4

6 に答える 6

15

私も同じ問題を抱えていました。oAuth 呼び出しのタイム スタンプが正しくない場合、サーバーが 401 ステータス エラーを返し、Android デバイスで「Received authentication challenge is null」という例外がスローされることが判明しました。この問題が発生していたすべてのデバイスの時刻が正しくなく、時刻を修正すると問題が修正されました。

おそらくこれはあなたの問題でもありますか?

于 2011-06-11T10:45:14.020 に答える
2

私も同じ問題を抱えていました。やってたら最初は取れてたgetOAuthRequestToken()。私のコンシューマ キーとコンシューマ シークレットは.propertiesファイルから取得されたもので、末尾にスペースがあることが判明したため、Twitter の API では無効と見なされました。

その後、私も同じように 401 を取得していgetOAuthAccessToken()ました。RequestTokenここでは、オブジェクトを正しく永続化および再構築していませんでした。

于 2011-08-19T12:37:22.767 に答える
1

これは、次のコードを 2 回続けて呼び出したときに発生しました。

 requestToken = twitter.getOAuthRequestToken();
    return requestToken.getAuthorizationURL();
于 2013-05-02T05:13:45.143 に答える
0

私もこの問題に遭遇しました。別のスレッドAndroid: Twitter4J Exception (Received Authentication Challenge Is Null)で私のソリューションを確認してください

于 2013-04-24T08:16:32.863 に答える