Search code examples
javaandroideclipselinkedin-api

LinkedIn authentication issue in eclipse


I AM trying to Integrate LinkedIn with android. Using tutorials I have applied following code...

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

            }
        });

    }

I get following error at

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

I have searched Internet and according to some posts it is because I am under some proxy. But I am pretty sure that I am not under any proxy. Kindly if anyone can tell me what to do. Best Regards


Solution

  • ok this is what I have used and it works fine now

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

    Libraries are

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