Search code examples
androidlinkedin-api

LinkedIn integration Android mobile SDK email id not fetching


I Agreed OAuth User Agreement:

Default Scope: r_basicprofile r_fullprofile

URL

private static final String host = "api.linkedin.com"; 
private static final String PROTECTED_URL_GET_CURRENT_USER_PROFILE = "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url,industry)";

Rest all i am getting except email address.? Any one know why?


Solution

  • You have to specify email permission when you build a scope Scope.R_EMAILADDRESS

    eg.

    private static Scope buildScope() {
        return Scope.build(Scope.R_BASICPROFILE, Scope.W_SHARE,Scope.R_EMAILADDRESS);
    }
    

    linkedin urls

    private static final String host = "api.linkedin.com";
    private static final String topCardUrl = "https://" + host
                + "/v1/people/~:(id,first-name,last-name,public-profile-url,picture-url,email-address,picture-urls::(original))";
    

    this is login code

     public void login() {
            LISessionManager sessionManager = LISessionManager
                    .getInstance(context);
            LISession session = sessionManager.getSession();
            boolean accessTokenValid = session.isValid();
    
            if (accessTokenValid) {
                getProfile();
            } else {
    
                LISessionManager.getInstance(context).init(context, buildScope(),
                        new AuthListener() {
                            @Override
                            public void onAuthSuccess() {
                                loginSuccess(LISessionManager.getInstance(context)
                                        .getSession().getAccessToken());
    
                            }
    
                            @Override
                            public void onAuthError(LIAuthError error) {
                                loginFailed(error);
    
                            }
                        }, true);
            }
        }
    

    this is for getting profile

    public void getProfile() {
            APIHelper apiHelper = APIHelper.getInstance(context);
            apiHelper.getRequest(context, topCardUrl, new ApiListener() {
                @Override
                public void onApiSuccess(ApiResponse s) {
                    onProfileSuccess(s);
    
                }
    
                @Override
                public void onApiError(LIApiError error) {
                    onProfileError(error);
                }
            });
    
        }