conexão Twitter falhou

? Bhavesh Jethani @ | Original: StackOverFlow
---

No Android , Twitter conexão falhou. SSL é necessária?

O meu código estava funcionando perfeitamente e é atualmente uma aplicação ao vivo. No entanto, desde 2014, não foi trabalhar e eu ouvi dizer que o Twitter tem https aplicada ou usando conceito SSL.

me ajudar a resolver este problema .

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)

código de conexão twitter.  http://www.androidhive.info/2012/09/android-twitter-oauth-connect-tutorial/ este é um desenvolver

---

Top 5 Responder

1richhallstoke @

Que eu saiba nada mudou muito com a implementação OAuth que faria com que este, no entanto, depois de ter autenticado usando OAuth se foram, então, através de pedidos de não-SSL para os dados que isso possa ter trabalhado anteriormente, mas não seria agora. Twitter introduziu uma mudança https://dev.twitter.com/discussions/24239 no dia 14 de Janeiro de 2014.

Em algum lugar em seu código Java haverá URL de que estão a ser utilizados para recuperar dados de servidores do Twitter . Gostaria de sugerir que você faça uma busca / substituição através de seu código, onde por quaisquer ocorrências de http://api.twitter.com/ você substituí-los por https://api.twitter.com/ e espero que isso possa resolver esta questão. É possível que haja outros problemas que possam aparecer depois, mas, pelo menos, este é o seu primeiro passo.

Ao especificar https isto faz com que você está usando o protocolo SSL para garantir que os dados são mantidos em segurança durante a transmissão entre seu aplicativo e Twitter .

Se precisar de mais informações, opcionalmente, validar e verificar o certificado SSL em seu código de segurança adicional, em seguida, ler https://dev.twitter.com/docs/security/using-ssl no site documentação desenvolvedores do Twitter .

Edit: Só para esclarecer, a fim de receber esta mensagem de erro que você deve ter autenticado com êxito usando OAuth através de uma URL SSL, mas depois voltou ao não- SSL URL para follow -on solicitações de dados .

2Mitch Wong Ho @

Se você estiver usando o sinal -post + Twitter4J, você definir seus provedores OAuth da seguinte forma:

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");

em seguida, executar a autenticação do usuário :

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();
    }
}

em seguida, obter as fichas :

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 @

Eu tive esse mesmo erro e atualização para a última versão do twitter4j 3.0.5, corrigiu o problema .

Receba as últimas aqui http://twitter4j.org/en/index.html#download

Devo mencionar que a versão que eu estava correndo era twitter4j 3.0.3 . indo para a versão 3.0.5 ou 3.0.6 corrigiu o problema para mim.