2013-05-23 11 views
5

Próbuję uzyskać adres e-mail od użytkownika linkedin po uwierzytelnieniu, teraz otrzymuję podstawowy profil, ale nie otrzymuję adresu e-mail.Nie otrzymujesz adresu e-mail z linkedin?

Używam pliku JAR do uwierzytelnienia http://code.google.com/p/linkedin-j/downloads/list.

Przeczytałem ten dokument, ale w pełni mnie nie używam http://oodlestechnologies.com/blogs/recent-changes-in-linkedin-api.

Poniżej kodu dla właściwości pliku 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 

kiedy jestem na zmianę czegokolwiek na powyżej tworząc słoika jego błędów pokaz.

teraz im pokazany mój kod: -

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

ale im zatrzymany, jak uzyskać adres e-mail, więc może ktoś mi pomóc

Odpowiedz

17

choć jej stary pytanie, myślę, że jego wartość do odpowiedź. Dużo walczyłem, aby znaleźć sposób na pobranie adresu e-mail użytkownika z linku za pomocą biblioteki linkedin-j-android. Niestety nie mogłem znaleźć żadnego gotowego do użycia rozwiązania, więc wprowadziłem zmiany w źródłach biblioteki i przepakowałem je do użycia w mojej aplikacji. Możesz pobrać bibliotekę z tego linku: https://dl.dropboxusercontent.com/u/46373731/linkedin-j-android.jar

Możesz użyć profiluField.EMAIL_ADDRESS, aby pobrać adres e-mail.

+0

Jego praca dla mnie teraz yepeeeeee !!!!!!!!! – duggu

+0

Jak mogę uzyskać numer kontaktowy? – Arpit

+1

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

Powiązane problemy