2012-07-22 9 views
5

ESTOY tratando de integrar LinkedIn con Android. Utilizando tutoriales he aplicado código siguiente ...Problema de autenticación de LinkedIn en eclipse

private void setWebView() 
    { 
     LinkedinDialog.oAuthService = LinkedInOAuthServiceFactory.getInstance().createLinkedInOAuthService(LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET); 
     LinkedinDialog.factory = LinkedInApiClientFactory.newInstance(LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET); 

     LinkedinDialog.liToken = LinkedinDialog.oAuthService.getOAuthRequestToken(OAUTH_CALLBACK_URL); 

     WebView mWebView = (WebView) findViewById(R.id.webkitWebView1); 
     mWebView.getSettings().setJavaScriptEnabled(true); 

     Log.i("LinkedinSample", LinkedinDialog.liToken.getAuthorizationUrl()); 
     mWebView.loadUrl(LinkedinDialog.liToken.getAuthorizationUrl()); 
     mWebView.setWebViewClient(new HelloWebViewClient()); 

     mWebView.setPictureListener(new PictureListener() 
     { 
      public void onNewPicture(WebView view, Picture picture) 
      { 
       if(progressDialog != null && progressDialog.isShowing()) 
       { 
        progressDialog.dismiss(); 
       } 

      } 
     }); 

    } 

consigo siguiente error al

LinkedinDialog.liToken = LinkedinDialog.oAuthService.getOAuthRequestToken(OAUTH_CALLBACK_URL); 




07-22 17:32:08.026: E/AndroidRuntime(26733): FATAL EXCEPTION: main 
07-22 17:32:08.026: E/AndroidRuntime(26733): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.devicebee.app.transportfinder/com.devicebee.app.transportfinder.LinkedInActivity}: com.google.code.linkedinapi.client.oauth.LinkedInOAuthServiceException: oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: https://api.linkedin.com/uas/oauth/requestToken 

He buscado en Internet y de acuerdo con algunos mensajes es porque estoy bajo algún proxy. Pero estoy bastante seguro de que no estoy bajo ningún poder. Amablemente si alguien me puede decir qué hacer. Saludos cordiales

Respuesta

0

bien esto es lo que he utilizado y funciona bien ahora

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.widget.Toast; 

import com.google.code.linkedinapi.client.LinkedInApiClient; 
import com.google.code.linkedinapi.client.LinkedInApiClientFactory; 
import com.google.code.linkedinapi.client.oauth.LinkedInAccessToken; 
import com.google.code.linkedinapi.client.oauth.LinkedInOAuthService; 
import com.google.code.linkedinapi.client.oauth.LinkedInOAuthServiceFactory; 
import com.google.code.linkedinapi.client.oauth.LinkedInRequestToken; 

public class LITestActivity extends Activity { 


    public static final String CONSUMER_KEY = "xx"; 
    public static final String CONSUMER_SECRET = "xx"; 
    private final static String APP_PNAME = "xx"; 


    public static final String APP_NAME = "xx; 
    public static final String OAUTH_CALLBACK_SCHEME = "xx"; 
    public static final String OAUTH_CALLBACK_HOST = "xxx"; 
    public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME 
      + "://" + OAUTH_CALLBACK_HOST; 

    final LinkedInOAuthService oAuthService = LinkedInOAuthServiceFactory 
      .getInstance().createLinkedInOAuthService(CONSUMER_KEY, 
        CONSUMER_SECRET); 
    final LinkedInApiClientFactory factory = LinkedInApiClientFactory 
      .newInstance(CONSUMER_KEY, CONSUMER_SECRET); 
    LinkedInRequestToken liToken; 
    LinkedInApiClient client; 

// TextView tv = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    // setContentView(R.layout.main); 
    // tv = (TextView) findViewById(R.id.tv); 
     try 
     { 
     liToken = oAuthService.getOAuthRequestToken(OAUTH_CALLBACK_URL); 
     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken 
       .getAuthorizationUrl())); 
     startActivity(i); 
     }catch (Exception e) { 
      Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show(); 

     } 
    } 

    @Override 
    protected void onNewIntent(Intent intent) { 
     String verifier = intent.getData().getQueryParameter("oauth_verifier"); 
     try{ 
     LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(
       liToken, verifier); 
     client = factory.createLinkedInApiClient(accessToken); 
     String tweet = "Download Android App " + "market://details?id=" + APP_PNAME; 
     client.postNetworkUpdate(tweet); 
     //Person p = client.getProfileForCurrentUser(); 
     //tv.setText(p.getLastName() + ", " + p.getFirstName()); 
    //  p.setCurrentStatus("tweet"); 

     }catch (Exception e) { 
      Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_SHORT).show(); 
     } 
     finish(); 

    } 
} 

Las bibliotecas son

linkedin-j-android.jar 
signpost-jetty6-1.2.1.1.jar 
signpost-core-1.2.1.1.jar 
+0

Gran !! Estoy usando exactamente el mismo código, pero sigo obteniendo "Acceso denegado para publicar acciones denegadas" ¿Alguna idea de lo que podría estar causando eso? Traté de agregar permisos utilizando el alcance, pero simplemente se ignora –

+0

Lea este http://developer.linkedin.com/documents/authentication#granting –

+0

Hola, mi aplicación está funcionando bien con LinkedIn, pero recibo este error en los dispositivos con Ice-Cream Sandwich ** La comunicación con el proveedor de servicios falló: null **. ¿Por favor, puede alguien ayudarme? –

1

Lo más probable es que intente ejecutar esto en su subproceso de interfaz de usuario donde la red no está permitida. Tendrá que implementar las llamadas Oauth en una AsyncTask.

Las llamadas de red en el hilo de la interfaz de usuario se permitieron hasta Android 3.0. El tutorial que está siguiendo probablemente fue escrito antes de que ocurriera ese cambio.

--EDIT-- Para comprobar si esto es cierto, puede intentar configurar el objetivo de la aplicación en la API 10 y ver si el problema desaparece.

Cuestiones relacionadas