简体   繁体   中英

Facebook android SDK 3 get email from user

Here is my code for facebook me request.i want to get user email and other basic info.this code is work without any issue in emulator.but in real device email gives null value. id,fristname... comes with real values. how can i get email on real device?

    Request request = Request.newMeRequest(session,
            new Request.GraphUserCallback() {


                @Override
                public void onCompleted(GraphUser user, Response response) {

                    if (user != null) {



                        RequestParams params = new RequestParams();

                        params.put("email",(String) user.getProperty("email"));
                        params.put("password", "");
                        params.put("facebook_id", user.getId());
                        editor.putString("facebook_id", user.getId());

                        login(params,
                                (String) user.asMap().get("email"),
                                user.getId(), user.getFirstName(),
                                user.getLastName());

                    }
                }
            });
    Bundle params = new Bundle();
    params.putString("fields", "id,email,first_name,last_name");
    request.setParameters(params);
    request.executeAsync();

Instead of submitting a ME request, use Facebook's LoginButton, and add a hook to intercept the user info:

// Intercept the facebook user returned from login
facebookLoginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {

    @Override
    public void onUserInfoFetched(GraphUser user) {
        mFacebookUser = user;

        if (user != null) {
            LogUtils.LOGFB(TAG, "Got a Facebook user: " + user.getFirstName() +
                    " " + user.getLastName() + ", email: " + user.getProperty("email"));
        }
        else {
            LogUtils.LOGFB(TAG, "No Facebook user");
        }
    }
});

Then add an extra permission to get email:

facebookLoginButton.setReadPermissions(Arrays.asList(
        "email", "user_birthday", ...));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM