Подтвердить что ты не робот

Не удалось подключиться к твиттеру

В Android,
Не удалось подключиться к Twitter. Требуется SSL?

Мой код работал отлично, и в настоящее время он является живым приложением. Однако с 2014 года он не работает, и я слышал, что Twitter применяет https или использует концепцию SSL.

помогите мне решить эту проблему.

Вот мой журнал.

 03-14 15:00:02.838: D/TwitterApp(697): Error getting access token
03-14 15:00:02.878: W/System.err(697): 403:The request is understood, but it has been refused. An accompanying error message will explain why. This code is used when requests are being denied due to update limits (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following).
03-14 15:00:02.878: W/System.err(697): message - SSL is required
03-14 15:00:02.878: W/System.err(697): code - 92
03-14 15:00:02.878: W/System.err(697): Relevant discussions can be found on the Internet at:
03-14 15:00:02.878: W/System.err(697):  http://www.google.co.jp/search?q=6f0f59ca or
03-14 15:00:02.888: W/System.err(697):  http://www.google.co.jp/search?q=20d0f73f
03-14 15:00:02.888: W/System.err(697): TwitterException{exceptionCode=[6f0f59ca-20d0f73f], statusCode=403, message=SSL is required, code=92, retryAfter=-1, rateLimitStatus=RateLimitStatusJSONImpl{remaining=14, limit=15, resetTimeInSeconds=1394790328, secondsUntilReset=-18874}, version=3.0.3}
03-14 15:00:02.888: W/System.err(697):  at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:177)
03-14 15:00:02.888: W/System.err(697):  at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
03-14 15:00:02.888: W/System.err(697):  at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:89)
03-14 15:00:02.888: W/System.err(697):  at twitter4j.TwitterBaseImpl.fillInIDAndScreenName(TwitterBaseImpl.java:126)
03-14 15:00:02.888: W/System.err(697):  at twitter4j.TwitterImpl.verifyCredentials(TwitterImpl.java:592)
03-14 15:00:02.908: W/System.err(697):  at com.twitter.android.TwitterApp$3.run(TwitterApp.java:150)

код подключения twitter. http://www.androidhive.info/2012/09/android-twitter-oauth-connect-tutorial/, это разработка

4b9b3361

Ответ 1

Насколько я знаю, ничего не изменилось с реализацией OAuth, которая могла бы вызвать это, однако, после того, как вы проверили подлинность с использованием OAuth, если бы вы использовали запросы без SSL для данных, это, возможно, работало ранее, но не было бы сейчас. Twitter внес изменения ограничение доступа только к соединениям SSL/TLS 14 января 2014 года.

Где-то в вашем Java-коде будет URL-адрес, который используется для извлечения данных с серверов Twitter. Я предлагаю вам выполнить поиск/замену через ваш код, где для любых вхождений http://api.twitter.com/ вы заменяете их на https://api.twitter.com/, и это может, надеюсь, решить эту проблему. Возможно, есть другие проблемы, которые могут возникнуть после этого, но по крайней мере это ваш первый шаг.

Указав https, вы убедитесь, что используете протокол SSL, чтобы обеспечить безопасность данных во время передачи между вашим приложением и Twitter.

Если вам нужна дополнительная информация для дополнительной проверки и проверки SSL-сертификата в коде для дополнительной безопасности, прочитайте Подключение к API Twitter через SSL на веб-сайте документации разработчиков Twitter.


Изменить. Чтобы уточнить, чтобы получить это сообщение об ошибке, вы должны успешно пройти аутентификацию с помощью OAuth через URL-адрес SSL, но затем вернулись к URL-адресу без SSL для последующих запросов данных.

Ответ 2

Если вы используете sign-post + Twitter4j, вы бы определили поставщиков OAuth следующим образом:

private DefaultOAuthConsumer mOAuthConsumer = null;
private DefaultOAuthProvider httpOauthprovider = new DefaultOAuthProvider("https://api.twitter.com/oauth/request_token",
        "https://api.twitter.com/oauth/access_token",
        "https://api.twitter.com/oauth/authorize");

выполните аутентификацию пользователя:

private void getTwitterAuthorisation() {
    if (backend.hasNetworkConnection(this, true)) {
        new Thread(new Runnable() {
            public void run() {
                try {
                    mOAuthConsumer = newOAuthConsumer();
                    String authUrl = httpOauthprovider.retrieveRequestToken(mOAuthConsumer, CALLBACK);
                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
                } catch (Exception e) {
                    Log.e(TAG, "getTwitterAuthorisation()", e);
                }
            }
        }).start();
    }
}

тогда получим токены:

TwitterCredentials creds = null;
            try {
                httpOauthprovider.retrieveAccessToken(mOAuthConsumer, verifier);
                final String token = mOAuthConsumer.getToken();
                final String secret = mOAuthConsumer.getTokenSecret();
                final AccessToken accessToken = new AccessToken(token, secret);
                final Twitter twitter = TwitterFactory.getSingleton();
                twitter.setOAuthConsumer(mOAuthConsumer.getConsumerKey(), mOAuthConsumer.getConsumerSecret());
                twitter.setOAuthAccessToken(accessToken);
                final long twitterId = twitter.getId();
                final String twitterScreenName = twitter.getScreenName();
                creds = new TwitterCredentials();
                creds.oauthToken = token;
                creds.oauthSecret = secret;
                creds.twitterId = twitterId;
                creds.screenName = twitterScreenName;
            } catch (Exception e) {
                Log.e(TAG, "doTwitterConnect", e);
            }
            return creds;

Ответ 3

У меня была такая же ошибка и обновление до последней версии twitter4j 3.0.5, исправлена ​​проблема.

Получите последние данные http://twitter4j.org/en/index.html#download

Я должен упомянуть, что версия я была запущена twitter4j 3.0.3. переход к версии 3.0.5 или 3.0.6 исправил проблему для меня.