I'm using LinkedIn OAuth
in my Android app. I've an LinkedIn application, consumer key and secret already, an as a result I can request succesfully.
Everything is fine until callback. The web page not calling back, I mean onNewIntent
or onResume
methods not calling. Web page only shows callback url with parameters. I mean it looks like:
callback_url://?oauth_token=324sdf&oath_verifier=as21dsf
Here is my all code:
try {
consumer = new CommonsHttpOAuthConsumer("ConsumerKey", "ConsumerSecret");
provider = new CommonsHttpOAuthProvider("https://api.linkedin.com/uas/oauth/requestToken", "https://api.linkedin.com/uas/oauth/accessToken", "https://api.linkedin.com/uas/oauth/authorize");
final String url = provider.retrieveRequestToken(consumer, Constants.OAUTH_CALLBACK_URL);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
Activity is already defined as singleInstance
in Manifest
.
What's wrong or missing?
I've found the answer myself after a long research.
I've changed my base class to linkedin-j
which can be looked at here.
Then set this constans as below:
public static final String CONSUMER_KEY = "ConsumerKey";
public static final String CONSUMER_SECRET = "ConsumerSecret";
public static final String OAUTH_CALLBACK_SCHEME = "callback";
public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + ":///";
And initialize like that:
LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory.getInstance().createLinkedInOAuthService(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
LinkedInApiClientFactory factory = LinkedInApiClientFactory.newInstance(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
LinkedInRequestToken liToken;
LinkedInApiClient client;
liToken = oAuthService.getOAuthRequestToken(Constants.OAUTH_CALLBACK_URL);
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken.getAuthorizationUrl()));
startActivity(i);
This callbacks well and I've handled at OnNewIntent:
String verifier = intent.getData().getQueryParameter("oauth_verifier");
LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(liToken, verifier);
client = factory.createLinkedInApiClient(accessToken);
client.postNetworkUpdate("Test");
That's all.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With