2011-04-29 21 views
5

desarrollé una aplicación integrada con linkedIn ..! hago la autenticación SignIn en linkedIn utilizando el servicio OAuth para publicar la actualización de red ... pero ahora ¿cómo se cierra la sesión (de-authenticate) automáticamente a LinkedIn?cómo cerrar sesión en LinkedIn usando authrequest usando android?

Gracias en Adv ..

+0

encontré una función que se va cerrar sesión "invalidateAccessToken (client.getAccessToken());" pero no está funcionando ... –

+0

lo he intentado con la siguiente URL https://www.linkedin.com/secure/login?session_full_logout=&trk=hb_signout pero no funcionó. – milind

+0

también probé con https://api.linkedin.com/uas/oauth/logout?oauth_token= pero no puede –

Respuesta

7

De acuerdo con el funcionario blog

invalidación de emergencia

Ahora puede invalidar un token OAuth para su aplicación. Sólo tiene que enviar una solicitud GET OAuth firmada a:

https://api.linkedin.com/uas/oauth/invalidateToken

una respuesta 200 indica que el testigo fue invalidado correctamente.

Sin embargo según this:

aplicaciones de terceros no tenemos ninguna manera de conectarse a un usuario de LinkedIn - esto es controlado por el sitio web. La invalidación del token hace que el usuario vuelva a autorizar la próxima vez que intenten utilizar la aplicación , pero una vez que hayan iniciado sesión en LinkedIn, su explorador permanecerá conectado hasta que cierren la sesión a través del sitio web.

Así que en conclusión: a partir de esta fecha de la escritura, Linked In no da soporte a esta 3 ª Parte aplicaciones

+1

termino satisfecho con ans. – milind

1

la lectura de su pregunta que también han tratado de encontrar la solución y también hablado con el Sr. Nabeel Siddiqui - Autor de linkedin-j API

y esta fue su respuesta cuando le pregunté si era posible cerrar sesión con linkedin-j api?

Hola Mayur Hay un método LinkedInOAuthService # invalidateAccessToken que se supone que invalida su token de acceso. La comunidad no la usa demasiado, así que no estoy seguro si funciona como se espera o no. Pruébalo y avísame si hay problemas. Saludos Nabeel Mukhtar

así que en mi actividad lo probé de esta manera.

final LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory.getInstance().createLinkedInOAuthService(consumerKey, consumerSecret); 
    final LinkedInApiClientFactory factory = LinkedInApiClientFactory.newInstance(consumerKey, consumerSecret); 
    LinkedInRequestToken liToken; 
    LinkedInApiClient client; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     liToken = oAuthService.getOAuthRequestToken(CALLBACKURL); 
     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken.getAuthorizationUrl())); 
     startActivity(i); 
    } 
    @Override 
    protected void onNewIntent(Intent intent) 
    { 
     super.onNewIntent(intent); 
     Uri uri = intent.getData(); 

     if (uri != null && uri.toString().startsWith(CALLBACKURL)) 
     { 
      String verifier = intent.getData().getQueryParameter("oauth_verifier"); 

      LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(liToken, verifier); 
      client = factory.createLinkedInApiClient(accessToken); 
      Connections con = client.getConnectionsForCurrentUser(); 

      //AFTER FETCHING THE DATA I HAVE DONE 

      oAuthService.invalidateAccessToken(accessToken); 
      //this is for sign out 

     } 
    } 

Por favor, intente de esta manera una vez y dígame si resuelve su problema.

cual también yo he visto donwloaded y el código fuente de API linkedin-j y en LinkedInOAuthServiceImpl.java

se han dado a la función y esa función también funciona si escribimos el mismo código en nuestro archivo. que es,

@Override 
    public void invalidateAccessToken(LinkedInAccessToken accessToken) { 
     if (accessToken == null) { 
      throw new IllegalArgumentException("access token cannot be null."); 
     } 
     try { 
      URL    url  = new URL(LinkedInApiUrls.LINKED_IN_OAUTH_INVALIDATE_TOKEN_URL); 
      HttpURLConnection request = (HttpURLConnection) url.openConnection(); 

      final OAuthConsumer consumer = getOAuthConsumer(); 
      consumer.setTokenWithSecret(accessToken.getToken(), accessToken.getTokenSecret()); 
      consumer.sign(request); 
      request.connect(); 

      if (request.getResponseCode() != HttpURLConnection.HTTP_OK) { 
       throw new LinkedInOAuthServiceException(convertStreamToString(request.getErrorStream())); 
      } 
     } catch (Exception e) { 
      throw new LinkedInOAuthServiceException(e); 
     } 
    } 
+0

nope .. !! no está trabajando con el método invalidateAccessToken() .. el usuario permanece conectado después de aplicarlo ... –

+0

ok ... en realidad no tuve suficiente tiempo para probar esto ... haré un poco más de trabajo y le haré saber si tengo éxito. – MKJParekh