2013-05-23 21 views
5

Tôi đang cố gắng để có được địa chỉ email từ người dùng linkedin sau khi xác thực bây giờ tôi m nhận được hồ sơ cơ bản nhưng không nhận được địa chỉ email.Bạn không nhận được địa chỉ email từ linkedin?

Tôi đang sử dụng http://code.google.com/p/linkedin-j/downloads/list tệp jar để xác thực.

tôi đã đọc hết tài liệu này nhưng không sử dụng đầy đủ cho tôi http://oodlestechnologies.com/blogs/recent-changes-in-linkedin-api.

Dưới mã cho các thuộc tính tập tin jar: -

# API URLs 
########## 
# Profile API 
com.google.code.linkedinapi.client.getProfileForCurrentUser=http://api.linkedin.com/v1/people/~{profileFields} 
com.google.code.linkedinapi.client.getProfileById=http://api.linkedin.com/v1/people/id={id}{profileType}{profileFields} 
com.google.code.linkedinapi.client.getProfileByUrl=http://api.linkedin.com/v1/people/url={url}{profileType}{profileFields} 

#OAuth URLs 
########### 
com.google.code.linkedinapi.client.oauth.requestToken=https://api.linkedin.com/uas/oauth/requestToken 
com.google.code.linkedinapi.client.oauth.accessToken=https://api.linkedin.com/uas/oauth/accessToken 
com.google.code.linkedinapi.client.oauth.authorize=https://www.linkedin.com/uas/oauth/authorize 
com.google.code.linkedinapi.client.oauth.invalidateToken=https://api.linkedin.com/uas/oauth/invalidateToken 

khi tôi đang thay đổi trên bất cứ điều gì trên trên và tạo jar lỗi chương trình của nó.

bây giờ im thấy mã của tôi: -

void startAutheniticate() { 

     System.out.println("OAUTH_CALLBACK_URL " + OAUTH_CALLBACK_URL); 

     final LinkedInRequestToken liToken = oAuthService 
       .getOAuthRequestToken(OAUTH_CALLBACK_URL); 
     final String uri = liToken.getAuthorizationUrl(); 
     getSharedPreferences(OAUTH_PREF, MODE_PRIVATE).edit() 
       .putString(PREF_REQTOKENSECRET, liToken.getTokenSecret()) 
       .commit(); 


     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); 
     startActivity(i); 
    } 


void finishAuthenticate(final Uri uri) { 
     if (uri != null && uri.getScheme().equals(OAUTH_CALLBACK_SCHEME)) { 
      final String problem = uri.getQueryParameter(OAUTH_QUERY_PROBLEM); 
      if (problem == null) { 
       final SharedPreferences pref = getSharedPreferences(OAUTH_PREF, 
         MODE_PRIVATE); 
       final LinkedInAccessToken accessToken = oAuthService 
         .getOAuthAccessToken(
           new LinkedInRequestToken(uri 
             .getQueryParameter(OAUTH_QUERY_TOKEN), 
             pref.getString(PREF_REQTOKENSECRET, 
               null)), 
           uri.getQueryParameter(OAUTH_QUERY_VERIFIER)); 
       pref.edit() 
         .putString(PREF_TOKEN, accessToken.getToken()) 
         .putString(PREF_TOKENSECRET, 
           accessToken.getTokenSecret()) 
         .remove(PREF_REQTOKENSECRET).commit(); 
       showCurrentUser(accessToken); 
      } else { 
       Toast.makeText(this, 
         "Appliaction down due OAuth problem: " + problem, 
         Toast.LENGTH_LONG).show(); 
       finish(); 
      } 

     } 
    } 


void clearTokens() { 
     getSharedPreferences(OAUTH_PREF, MODE_PRIVATE).edit() 
       .remove(PREF_TOKEN).remove(PREF_TOKENSECRET) 
       .remove(PREF_REQTOKENSECRET).commit(); 
    } 

    void showCurrentUser(final LinkedInAccessToken accessToken) { 

     final LinkedInApiClient client = factory 
       .createLinkedInApiClient(accessToken); 
     try { 

      final Person profile = client.getProfileForCurrentUser(EnumSet.of(
        ProfileField.ID, ProfileField.FIRST_NAME, 
        ProfileField.LAST_NAME, ProfileField.HEADLINE, 
        ProfileField.INDUSTRY, ProfileField.PICTURE_URL, 
        ProfileField.DATE_OF_BIRTH, ProfileField.LOCATION_NAME, 
        ProfileField.MAIN_ADDRESS, ProfileField.LOCATION_COUNTRY 
        )); 

      // ///////////////////////////////////////////////////////// 
      // here you can do client API calls ... 
      // client.postComment(arg0, arg1); 
      // client.updateCurrentStatus(arg0); 
      // or any other API call (this sample only check for current user 
      // and shows it in TextView) 
      // ///////////////////////////////////////////////////////// 


      System.out.println("p => " + profile); 
      System.out.println("PersonID : " + profile.getId()); 
      System.out.println("Name : " + profile.getFirstName() + " " 
        + profile.getLastName()); 
      System.out.println("Headline : " + profile.getHeadline()); 
      System.out.println("Industry : " + profile.getIndustry()); 
      System.out.println("Picture : " + profile.getPictureUrl()); 
      DateOfBirth dateOfBirth = profile.getDateOfBirth(); 
      System.out.println("DateOfBirth : " + dateOfBirth.getDay() + "/" 
        + dateOfBirth.getMonth() + "/" + dateOfBirth.getYear()); 
      System.out.println("MAin Address : " + profile.getMainAddress()); 
      Location location = profile.getLocation(); 
      System.out.println("Location:" + location.getName() + " - " 
        + location.getCountry().getCode()); 
      // get_from_last 


      Toast.makeText(LITestActivity.this, "Wait...", Toast.LENGTH_LONG).show(); 



      startActivity(new Intent(LITestActivity.this, 
        UserProfileScreen.class) 
        .putExtra("get_from_last", "1") 
        .putExtra("getId", profile.getId()) 
        .putExtra("getEmail", "[email protected]") 
        .putExtra("getFirstName", profile.getFirstName()) 
        .putExtra("getLastName", profile.getLastName()) 
        .putExtra("getHeadline", profile.getHeadline()) 
        .putExtra("getPictureUrl", profile.getPictureUrl()) 
        .putExtra(
          "dob", 
          dateOfBirth.getDay() + "/" + dateOfBirth.getMonth() 
            + "/" + dateOfBirth.getYear())); 

      finish(); 
     } catch (LinkedInApiClientException ex) { 
      clearTokens(); 
      Toast.makeText(
        this, 
        "Appliaction down due LinkedInApiClientException: " 
          + ex.getMessage() 
          + " Authokens cleared - try run application again.", 
        Toast.LENGTH_LONG).show(); 
      pd.dismiss(); 
      finish(); 
     } 

    } 

    int i = 0; 

    public void onNewIntent(Uri intent) { 

     if (i == 0) { 
      i++; 
      finishAuthenticate(intent); 
     } else { 
      i++; 
     } 
     System.out.println("i => " + i); 
    } 

nhưng im stuck làm thế nào để có được địa chỉ email để có thể bất kỳ một giúp tôi

Trả lời

17

Mặc dù nó là một câu hỏi cũ, tôi nghĩ rằng giá trị của nó để câu trả lời. Tôi đã đấu tranh rất nhiều để tìm cách lấy địa chỉ email của người dùng từ linkedin bằng thư viện linkedin-j-android. Thật không may tôi không thể tìm thấy bất kỳ giải pháp sẵn sàng để sử dụng, vì vậy tôi đã thực hiện thay đổi trong các nguồn thư viện và đóng gói lại nó để sử dụng trong ứng dụng của tôi. Bạn có thể tải xuống thư viện từ liên kết này: https://dl.dropboxusercontent.com/u/46373731/linkedin-j-android.jar

Bạn có thể sử dụng ProfileField.EMAIL_ADDRESS để tìm nạp địa chỉ email.

+0

Công việc của tôi dành cho tôi bây giờ yepeeeeee !!!!!!!!! – duggu

+0

Tôi có thể lấy số liên lạc bằng cách nào? – Arpit

+1

https://github.com/jenuprasad/LinkedinEmailIdSampleapp – jenuine