2012-07-22 29 views
5

Tôi đang cố gắng Tích hợp LinkedIn với Android. Sử dụng hướng dẫn tôi đã áp dụng mã sau ...Vấn đề xác thực LinkedIn trong nhật thực

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

      } 
     }); 

    } 

tôi nhận được lỗi sau tại

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 

Tôi đã tìm kiếm Internet và theo một số bài viết đó là vì tôi theo một số proxy. Nhưng tôi khá chắc chắn rằng tôi không dưới bất kỳ proxy nào. Vui lòng nếu có ai có thể cho tôi biết phải làm gì. Trân trọng

Trả lời

0

ok đây là những gì tôi đã được sử dụng và nó hoạt động tốt tại

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 là

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

Great !! Tôi đang sử dụng chính xác cùng một mã nhưng tôi tiếp tục nhận được "Truy cập để gửi bài cổ phiếu bị từ chối" bất kỳ ý tưởng những gì có thể gây ra điều đó ?? Tôi đã cố gắng thêm quyền sử dụng phạm vi nhưng nó chỉ bị bỏ qua –

+0

Vui lòng đọc http://developer.linkedin.com/documents/authentication#granting –

+0

Xin chào, ứng dụng của tôi đang hoạt động tốt với LinkedIn, nhưng tôi nhận được lỗi này trên thiết bị với Ice-Cream Sandwich ** Giao tiếp với nhà cung cấp dịch vụ không thành công: null **. Bất cứ ai có thể vui lòng giúp tôi ra? –

1

Rất có thể bạn đang cố gắng chạy điều này trên chuỗi giao diện người dùng của bạn nơi mạng không được phép. Bạn sẽ cần triển khai các cuộc gọi oauth trong AsyncTask.

Cuộc gọi mạng trên chuỗi giao diện người dùng đã được cho phép cho đến Android 3.0. Hướng dẫn bạn đang theo dõi có thể được viết trước khi thay đổi đó xảy ra.

--EDIT-- Để kiểm tra xem điều này có đúng không, bạn có thể thử đặt mục tiêu ứng dụng của mình thành API 10 và xem sự cố có biến mất hay không.

Các vấn đề liên quan