2012-07-25 22 views
6

Estoy usando LinkedIn OAuth en mi aplicación de Android. Ya tengo una aplicación de LinkedIn, una clave de consumidor y un secreto, y como resultado puedo solicitarlo con éxito.Android: la devolución de llamada de OAuth en LinkedIn no funciona

Todo está bien hasta la devolución de llamada. La página web no responde, me refiero a los métodos onNewIntent o onResume que no llaman. La página web solo muestra la url de devolución de llamada con parámetros. Me refiero a que parece:

callback_url://?oauth_token=324sdf&oath_verifier=as21dsf 

Aquí es mi todo el código:

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(); 
} 

actividad que ya se define como singleInstance en Manifest.

¿Qué le pasa o qué le falta?

Respuesta

2

He encontrado la respuesta después de una larga investigación.

He cambiado mi clase base a linkedin-j que se puede consultar en here.

A continuación, establezca esta constans de la siguiente manera:

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 + ":///"; 

e inicializar así:

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); 

Este devoluciones de llamada bien y me he manejado en OnNewIntent:

String verifier = intent.getData().getQueryParameter("oauth_verifier"); 

LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(liToken, verifier); 
client = factory.createLinkedInApiClient(accessToken); 
client.postNetworkUpdate("Test"); 

Eso es todo .

+0

Hola Martin, tuve muchas pruebas de búsqueda y demostración, falle con todos los ejemplos, ahora en su publicación, me gustaría saber primero, ¿su código funciona con Android 4.0 y superior? –

+0

Puedes publicar una actualización si tu código funciona con Android 4.0 arriba. Además de eso, comparta su AndroidManifest.xml también porque recibo un ERR_UNKNOWN_URL_SCEME después de ingresar los detalles y presionar Enter en mi LinkedIn WebView. –

Cuestiones relacionadas