La conexión de twitter falló
En Android ,
La conexión de Twitter falló. ¿Se requiere SSL?
Mi código funcionaba perfectamente y actualmente es una aplicación en vivo. Sin embargo, desde 2014 no ha estado trabajando y he oído que Twitter ha aplicado https o utilizando el concepto de SSL.
- Android: Inicia sesión con Twitter usando Twitter4J
- Twitter no funciona con twitter4j en android
- Android Twitter4j dando error NoClassDefFoundError: twitter4j.TwitterFactory
- Android twitter4j - ¿Cómo compartir la imagen remota?
- Twitter4j TwitterStream Detener / Cerrar
Ayúdame a solucionar este problema.
Aquí está mi registro.
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 conexión twitter . Http://www.androidhive.info/2012/09/android-twitter-oauth-connect-tutorial/ esto es un desarrollo
- Integración de Twitter con oauth y twitter4j
- Twitter4j getOAuthRequestToken () con la URL de devolución de llamada falla en Android?
- Uso de Twitter4j en android, obteniendo errores de pelusa en la biblioteca - Referencia de paquete no válida en la biblioteca
- ¿Salir de la cuenta de Twitter usando JTwitter?
- Twitter4j: Obtener la lista de respuestas para un determinado tweet
- Cheque Quien estoy siguiendo a través de Twitter4j
- Problema con OAuth, Twitter y Android: falla en la comunicación http con el servidor
- Twitter4J + Android: El desafío de autenticación es una excepción nula
A mi entender nada ha cambiado mucho con la implementación de OAuth que causaría esto, sin embargo, después de que usted haya autenticado usando OAuth si usted entonces utilizaba peticiones no-SSL para los datos esto pudo haber trabajado previamente pero ahora no. Twitter introdujo un cambio restringiendo el acceso a las conexiones SSL / TLS sólo el 14 de enero de 2014.
En algún lugar de tu código Java habrá URL que se están utilizando para recuperar datos de los servidores de Twitter. Le sugeriría que haga una búsqueda / reemplazo a través de su código, donde para cualquier ocurrencia de http://api.twitter.com/
usted los substituye con https://api.twitter.com/
y esto puede esperanzadamente solucionar este problema. Es posible que haya otros problemas que pueden salir a la luz después, pero al menos este es su primer paso.
Al especificar https
se asegura de que está utilizando el protocolo SSL para garantizar que los datos se mantengan seguros durante la transmisión entre su aplicación y Twitter.
Si necesita más información para validar y verificar opcionalmente el certificado SSL en su código para obtener seguridad adicional, lea Conectando a la API de Twitter a través de SSL en el sitio web de documentación de desarrolladores de Twitter.
Editar: Sólo para aclarar más, para recibir este mensaje de error debe haber autenticado correctamente utilizando OAuth a través de una dirección URL SSL, pero luego volver a URL no SSL para las solicitudes de datos de seguimiento.
Si utilizas sign-post + Twitter4j, definirías los proveedores de OAuth de la siguiente manera:
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");
Luego realice la autenticación de usuario:
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(); } }
Luego obtenga los tokens:
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;
Tuve este mismo error y la actualización a la última versión de twitter4j 3.0.5, arregló el problema.
Obtenga lo último aquí http://twitter4j.org/es/index.html#download
Debo mencionar que la versión que estaba ejecutando era twitter4j 3.0.3. Ir a la versión 3.0.5 o 3.0.6 arregló el problema para mí.