I am using twitter4j to send tweet from my application. When I invoke the method retrieveRequestToken, I get the error "Communication with the service provider failed: 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();
}
}
Thank you.
If this is in ICS, I highly recommend against using StrictMode.enableDefaults;
.
ICS does not allow Http requests to occur in the UI thread, so when you do as above, you get that error.
To fix this, do provider.retrieveRequestToken(consumer, CALLBACK_URL);
in a background thread as well as provider.retrieveAccessToken(consumer, verifier);
.