Method recoverveRequestToken soulève "La communication avec le fournisseur de service a échoué: null"

J'utilise twitter4j pour envoyer des tweets à partir de ma demande. Lorsque j'invoque la méthode retrieveRequestToken, j'ai l'erreur "La communication avec le fournisseur de service a échoué: null".

public static void askOAuth(Context context) { try { // Use Apache HttpClient for HTTP messaging consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); provider = new CommonsHttpOAuthProvider( "https://api.twitter.com/oauth/request_token", "https://api.twitter.com/oauth/access_token", "https://api.twitter.com/oauth/authorize"); String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); Toast.makeText(context, "Authorize this app!", Toast.LENGTH_LONG).show(); context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); } catch (Exception e) { Log.e(APP, e.getMessage()); Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); } } 

Je vous remercie.

  • Plusieurs informations Windows dans Android Maps API 2
  • Android GoogleAnalytics getInstance
  • Mise à jour du widget d'application à l'aide de AlarmManager
  • Comment obtenir la valeur d'élément sélectionnée de Spinner en chaîne?
  • Comment importer un certificat SSL auto-signé vers Volley sur Android 4.1+
  • Captures d'écran avec Idea Intellij
  • Vous pouvez sauvegarder les jetons d'accès / actualisation Oauth2 dans les préférences partagées dans Android?
  • Existe-t-il un moyen d'obtenir un fragment du haut de la pile?
  • Comment être averti quand une transition entre les activités a été terminée?
  • Quelle est la meilleure façon d'obtenir un contexte?
  • XmlPullParser: obtenez un texte interne incluant des balises XML
  • Deux mises en page différentes pour une activité
  • 6 Solutions collect form web for “Method recoverveRequestToken soulève "La communication avec le fournisseur de service a échoué: null"”

    Si cela est dans ICS, je recommande fortement d'utiliser StrictMode.enableDefaults; .

    ICS n'autorise pas les requêtes Http dans le thread UI, donc, lorsque vous faites comme ci-dessus, vous obtenez cette erreur.

    Pour résoudre ce problème provider.retrieveRequestToken(consumer, CALLBACK_URL); Dans un thread d'arrière-plan ainsi que provider.retrieveAccessToken(consumer, verifier); .

    Source: http://code.google.com/p/oauth-signpost/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&groupby=&sort=&id= 71

    J'ai finalement trouvé le problème, il a affaire avec StrictModes dans les dernières versions d'Android. Exécuter StrictMode.enableDefaults(); Avant de faire l'appel, le problème est corrigé.

    Bien que cela ait fonctionné pour moi, j'aimerais savoir s'il existe une solution plus élégante pour corriger le problème.

    Avez-vous ajouté une balise d'autorisation concernant l'utilisation de "INTERNET" dans le fichier de manifeste Android.

    TAG ——>

    Happy Coding … 🙂

    Vérifiez deux étapes

    1- Donner une URL de rappel dans votre application Twitter créée par vous sur le site Twitter
    2- Accédez aux paramètres du téléphone, puis cliquez sur «Date et heure» et sélectionnez «Automatique»

    Essayez à l'intérieur de OnCreate ():

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); 

    Exemple de AsyncTask

      /** * Represents an asynchronous login/registration task used to authenticate * the user. */ public class RequestTask extends AsyncTask<Void, Void, Boolean> { String content; private ProgressDialog dialog; protected void onPreExecute() { dialog = new ProgressDialog(LoginUsingTwitterActivity.this); dialog.setMessage("Loading..."); dialog.setCancelable(false); dialog.show(); } protected Boolean doInBackground(Void... params) { httpOauthConsumer = new CommonsHttpOAuthConsumer( TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET); httpOauthprovider = new DefaultOAuthProvider(REQUEST_URL, ACCESS_URL, AUTHORIZE_URL); try { authUrl = httpOauthprovider.retrieveRequestToken( httpOauthConsumer, CALLBACK_URL); } catch (OAuthMessageSignerException e) { e.printStackTrace(); return false; } catch (OAuthNotAuthorizedException e) { e.printStackTrace(); return false; } catch (OAuthExpectationFailedException e) { e.printStackTrace(); return false; } catch (OAuthCommunicationException e) { e.printStackTrace(); return false; } return true; } @Override protected void onPostExecute(final Boolean success) { if (success == true) { Log.e("LoginUsingTwitterActivity", "onPostExecute"); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); } dialog.dismiss(); } @Override protected void onCancelled() { dialog.dismiss(); mAuthTask = null; } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.