2012-04-05 12 views
7

Estoy utilizando LinkedIn-j API para la integración de LinkedIn. Puedo publicar la Actualización de estado. Quiero para mostrar el perfil de usuario en WebView en Android para eso obtengo la URL pública del usuario usando el código siguiente.Linked-in Una vez autenticado: mientras se llama a la Url del perfil de usuario, nuevamente solicite la autenticación

person.getSiteStandardProfileRequest().getUrl(); 

cual regresar algo como esto http://www.linkedin.com/profileviewProfile=&key=100652876&authToken=AWW7&authType=name&trk=api*a169149*s177398*

Si voy a abrir esta URL en WebView luego volver a dirigir a su página de entrada a LinkedIn y después del llenado de credenciales puedo ver el perfil de usuario.

quiero abrir el perfil del usuario sin necesidad de introducir credenciales, Una vez más

también probé añadiendo el

URL&accesstoken="tokenIdReturned by Application"; 

Pero todavía no soy capaz de abrir el perfil de usuario directamente. ¿Qué me falta?

+0

¿Cuál es el problema? ¿Estás recibiendo algún error? – kosa

+0

@thinksteep No hay ningún error/no forzar cierre, solo hace mendatory para iniciar sesión de nuevo Quiero mantener viva la sesión/cookie. – MKJParekh

Respuesta

5

Tenía el mismo Requisito y lo he hecho haciendo dos cosas.

En primer lugar he utilizado mi propia vista web para cargar diferentes URL para autenticar y para mostrar profiles.I han hecho mi WebView como public staticen lugar de utilizar el navegador por defecto que tengo redirigir las llamadas a mi propia WebView en mi actividad .

Segundo He configurado webview.getSettings().setAppCacheEnabled(true); por lo que ahora no solicita el inicio de sesión nuevamente mientras visualiza el perfil.

He declarado mi actividad como singleInstace en el archivo Manifest.xml.

ACTUALIZACIÓN:

La forma en que utiliza la vista web Mi actividad.

public static WebView WV = null; 
String uri; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    tv = (TextView) findViewById(R.id.tv); 
    if (WV == null) { 
     WV = (WebView) findViewById(R.id.webView1); 
     WV.getSettings().setJavaScriptEnabled(true); 
     WV.getSettings().setAppCacheEnabled(true); // the important change 
     WV.getSettings().setSupportZoom(true); 
     WV.getSettings().setBuiltInZoomControls(true); 
    } 

    final SharedPreferences pref = getSharedPreferences(OAUTH_PREF, 
      MODE_PRIVATE); 
    final String token = pref.getString(PREF_TOKEN, null); 
    final String tokenSecret = pref.getString(PREF_TOKENSECRET, null); 
    if (token == null || tokenSecret == null) { 
     startAutheniticate(); 
    } else { 
     showCurrentUser(new LinkedInAccessToken(token, tokenSecret)); 
    } 

} 


void startAutheniticate() { 
    final LinkedInRequestToken liToken = oAuthService 
      .getOAuthRequestToken(OAUTH_CALLBACK_URL); 
    uri = liToken.getAuthorizationUrl(); 
    getSharedPreferences(OAUTH_PREF, MODE_PRIVATE).edit() 
      .putString(PREF_REQTOKENSECRET, liToken.getTokenSecret()) 
      .commit(); 
    WV.loadUrl(uri); 
} 

void showCurrentUser(final LinkedInAccessToken accessToken) { 
    // code to get Profile object using Linkedin-J API 
    //which is already available on the API site as Example 

    WV.loadUrl(profile.getSiteStandardProfileRequest().getUrl()); 
} 
+1

+1 por buena solución .. :) –

+1

+1 Nice Solution MJ. –

+0

Gracias, y todos ustedes vienen. – MKJParekh

Cuestiones relacionadas