Twitter подключения не удалась

? Bhavesh Jethani @ | Original: StackOverFlow
---

В Android Twitter соединение не удалось . SSL требуется?

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

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

Here is my log.

 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/ эторазвитие

---

Top 5 ответ

1richhallstoke @

К моему ничего знаниями многое изменилось с реализацией OAuth, которые могут вызвать это, однако, после того, как вы прошли проверку подлинности с помощью OAuth, если вы затем с помощью запросов без SSL для передачи данных, это может работали ранее, но будет не сейчас. Twitter внес изменения https://dev.twitter.com/discussions/24239 14 января 2014 года.

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

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

Если вам нужна дополнительная информация опционально проверки и проверки сертификата SSL в коде для дополнительной безопасности, а затем прочитать https://dev.twitter.com/docs/security/using-ssl на веб-сайте разработчиков документации в Twitter .

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

2Mitch Wong Ho @

Если вы используете Зарегистрировать сообщение + 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;
3Vaishali @

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

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

Следует отметить, чтоверсия я бежал был twitter4j 3.0.3 . собирается до версии 3.0.5 или 3.0.6 исправлена ​​ошибка, для меня.