Twitter4J + Android: проверка подлинности является нулевым исключением - PullRequest
14 голосов
/ 25 мая 2011

Я использую библиотеку 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.запрос (HttpClientWrapper.java:65) E / Home (4393): в twitter4j.internal.http.HttpClientWrapper.post (HttpClientWrapper.java:102) E / Home (4393): в twitter4j.auth.OAuthAuthorization.getOAuthReautЯва: 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): на 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): at 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.HTPUR.HTPretrieveResponse (HttpURLConnectionImpl.java:1048) E / Home (4393): в org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode (HttpURLConnectionImpl) /java (7): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode (HttpsURLConnectionImpl.java:121) E / Home (4393): в twitter4j.internal.http.HttpResponseImpl.mpl.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

Ответы [ 6 ]

15 голосов
/ 11 июня 2011

У меня была такая же проблема. Оказалось, что, если отметка времени в вызове oAuth неверна, сервер возвращает ошибку состояния 401, которая на устройствах Android вызывает исключение «Получен запрос проверки подлинности пустым». Все устройства, которые имели эту проблему, имели неправильные времена, и исправление времени решило проблему.

Возможно, это и ваша проблема?

2 голосов
/ 19 августа 2011

У меня тоже была такая же проблема. Сначала я получал это при выполнении getOAuthRequestToken(). Мой потребительский ключ и потребительский секрет были получены из файла .properties, и оказалось, что у них есть конечный пробел, поэтому API Twitter их считали недействительными.

После этого я тоже получал тот же 401 при выполнении getOAuthAccessToken(). Здесь я не правильно сохранил и реконструировал объект RequestToken.

1 голос
/ 02 мая 2013

Это случилось для меня, когда я дважды звонил по следующему номеру:

 requestToken = twitter.getOAuthRequestToken();
    return requestToken.getAuthorizationURL();
0 голосов
/ 16 июня 2013

У меня была такая же проблема, и я исправил ее с помощью асинхронной задачи как я ответил по следующей ссылке Ошибка исключения в Android Twitter: (

0 голосов
/ 24 апреля 2013

Я тоже наткнулся на эту проблему. Проверьте мое решение в другой теме Android: исключение Twitter4J (получен запрос на проверку подлинности пуст)

0 голосов
/ 01 апреля 2013

ИСПРАВЛЕНО: У меня было это исключение даже после того, как я установил дату и время, но когда я посмотрел в logcat на параметры, которые twittherj отправлял на сервер, временная метка все еще была неправильной - поэтому я принудительно закрыл приложение и после того, как это исключение исчезло.

...