Puede lograrlo utilizando un tercero jar scribe.jar. Intento de webview para la autorización de la siguiente manera.
OAuthService service = new ServiceBuilder()
.provider(LinkedInApi.class).apiKey(Constants.CONSUMER_KEY)
.apiSecret(Constants.CONSUMER_SECRET)
.callback(Constants.OAUTH_CALLBACK_URL).build();
Token liToken = oAuthService
.getRequestToken();
String url = oAuthService
.getAuthorizationUrl(PrepareRequestLinkedinTokenActivity.liToken);
Log.i(TAG, "Popping a browser with the authorize URL : " + url);
// Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken
// .getAuthorizationUrl()));
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
context.startActivity(intent);
En la autorización, se le redirige a su actividad. Recupere el token de acceso en su actividad de la siguiente manera.
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
final Uri uri = intent.getData();
if (uri != null
&& uri.getScheme().equals(Constants.OAUTH_CALLBACK_SCHEME)) {
Log.i(TAG, "Callback received : " + uri);
Log.i(TAG, "Retrieving Access Token");
new RetrieveAccessTokenTask(this, prefs).execute(uri);
finish();
}
}
public class RetrieveAccessTokenTask extends AsyncTask<Uri, Void, Void> {
private SharedPreferences prefs;
public RetrieveAccessTokenTask(Context context, SharedPreferences prefs) {
this.prefs = prefs;
}
/**
* Retrieve the oauth_verifier, and store the oauth and
* oauth_token_secret for future API calls.
*/
@Override
protected Void doInBackground(Uri... params) {
final Uri uri = params[0];
final Verifier verifier = new Verifier(
uri.getQueryParameter("oauth_verifier"));
try {
accessToken = service.getAccessToken(liToken, verifier);
final Editor edit = prefs.edit();
edit.putString(Constants.LINKEDIN_TOKEN, accessToken.getToken());
edit.putString(Constants.LINKEDIN_TOKEN_SECRET,
accessToken.getSecret());
edit.commit();
Log.i(TAG, "OAuth - Access Token Retrieved");
} catch (Exception e) {
Log.e(TAG, "OAuth - Access Token Retrieval Error", e);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
executeAfterAccessTokenRetrieval(accessToken);
}
Con el token de acceso puede realizar actualizaciones de red a linkedin de la siguiente manera.
private void postToLinkedin(String comment) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(LinkedinDialogActivity.this);
String token = prefs.getString(Constants.LINKEDIN_TOKEN, "");
String secret = prefs.getString(Constants.LINKEDIN_TOKEN_SECRET, "");
Token accessToken = new Token(token, secret);
OAuthService service = new ServiceBuilder().provider(LinkedInApi.class)
.apiKey(Constants.CONSUMER_KEY)
.apiSecret(Constants.CONSUMER_SECRET)
.callback(Constants.OAUTH_CALLBACK_URL).build();
String url = "http://api.linkedin.com/v1/people/~/shares";
OAuthRequest request = new OAuthRequest(Verb.POST, url);
String payLoad = "<?xml version='1.0' encoding='UTF-8'?><share><comment>Check out the Sep 13 Second share!</comment><content><title>My new share with linked-in</title><description>Leverage the Share API to maximize engagement on user-generated content on LinkedIn</description><submitted-url>https://developer.linkedin.com/documents/share-api</submitted-url><submitted-image-url>http://m3.licdn.com/media/p/3/000/124/1a6/089a29a.png</submitted-image-url></content><visibility><code>anyone</code></visibility></share>";
request.addHeader("Content-Length", Integer.toString(payLoad.length()));
request.addHeader("Content-Type", "text/xml");
request.addPayload(payLoad);
service.signRequest(accessToken, request);
Response response = request.send();
System.out.println("response >>>> " + response.getBody());
}
La actividad debe declararse en el archivo de manifiesto de la siguiente manera.
<activity android:name=".PrepareRequestLinkedinTokenActivity"
android:launchMode="singleTask" android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="callback" android:scheme="x-oauthflow-linkedin" />
</intent-filter>
</activity>
Hola Thasneem Estoy buscando la integración de linkedin con Android utilizando Scribe. ¿Podría enviarme una aplicación de muestra si tiene o me guía a través de un enlace relevante? –
Consulte la siguiente dirección URL para obtener más información. https: // github.com/fernandezpablo85/scribe-java/blob/master/src/test/java/org/scribe/examples/LinkedInExample.java. Puede descargar una aplicación de muestra desde aquí. – Thasneem