Как сделать вызов API для получения электронной почты пользователя с помощью facebook sdk 4.0 в Android

Пытаясь получить информацию о профиле пользователя facebook, включая электронную почту пользователя, я попытался и преуспел в получении необходимой информации, кроме адреса электронной почты, согласно странице разработчика, мне нужно сделать новый запрос API, чтобы получить информацию об электронной почте и местоположении. Кто-то предложит мне, как сделать этот API запрос в следующем коде, вот как я делаю запрос на получение данных профиля пользователя facebook

// Callback registration
    loginButton.registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code

                    // login ok get access token
                    GraphRequest request = GraphRequest.newMeRequest(
                            AccessToken.getCurrentAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(JSONObject object,
                                        GraphResponse response) {

                                    if (BuildConfig.DEBUG) {
                                        FacebookSdk.setIsDebugEnabled(true);
                                        FacebookSdk
                                                .addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

                                        System.out
                                                .println("AccessToken.getCurrentAccessToken()"
                                                        + AccessToken
                                                                .getCurrentAccessToken()
                                                                .toString());
                                        Profile.getCurrentProfile().getId();
                                        Profile.getCurrentProfile().getFirstName();
                                        Profile.getCurrentProfile().getLastName();
                                        Profile.getCurrentProfile().getProfilePictureUri(50, 50);

                                    }
                                }
                            });
                    Bundle parameters = new Bundle();
                    parameters
                            .putString("fields",
                                    "id,firstName,lastName,name,email,gender,birthday,address");
                    request.setParameters(parameters);

                    request.executeAsync();

                    Intent loginintent = new Intent(getActivity(),
                            EditProfile.class);
                    startActivity(loginintent);
                    System.out.println("XXXX " + getId());

                    makeJsonObjReq();
                }

                @Override
                public void onCancel() {
                    // App code
                }

                @Override
                public void onError(FacebookException exception) {
                    // App code
                }
            });

    return view;

}

это предложение, данное на странице разработчика, чтобы получить электронное письмо о том, как вызывать API в мой код, пожалуйста, помогите


person Prabha1    schedule 28.04.2015    source источник


Ответы (1)


Хоп это будет работать для вас.

final Request request = Request.newMeRequest(Session.getActiveSession(), new Request.GraphUserCallback() {
            @Override
            public void onCompleted(final GraphUser use, final Response response) {
                final String email = user.asMap().get("email").toString();
            }
        });
        Request.executeBatchAsync(request);

новый график API для получения информации о пользователе в v2.3

new Request(session,"/{user-id}",null,HttpMethod.GET,new Request.Callback(){
    public void onCompleted(Response response) {
        /* handle the result */
    }
}).executeAsync();
person Mr. Borad    schedule 28.04.2015
comment
Метод executeBatchAsync(GraphRequest) не определен для типа Request и Session не может быть разрешен, а Request.GraphUserCallback не может быть разрешен для типа и Метод executeBatchAsync(GraphRequest) не определен для типа Request - person Prabha1; 28.04.2015
comment
Вы должны импортировать весь класс из facebook sdk. импортировать com.facebook.Request; импортировать com.facebook.Response; импортировать com.facebook.Session; - person Mr. Borad; 28.04.2015
comment
да, да, я пробовал все, но неудача означает, что эти пакеты не импортируют, какой facebook sdk вы используете? - person Prabha1; 28.04.2015
comment
com.facebook.android:facebook-android-sdk:3.20.0+ - person Mr. Borad; 28.04.2015
comment
Недавно я внедрил 3.5, но теперь я хочу использовать 4.0, я думаю, что некоторые классы могут устареть из старого SDK. Эта интеграция SDK facebook стала беспокойной из-за нескольких обновлений. - person Prabha1; 28.04.2015
comment
да ты прав. похоже, я должен начать с самого начала. - person Mr. Borad; 28.04.2015
comment
у меня обновление может ответить. это поможет получить адрес электронной почты пользователя. - person Mr. Borad; 28.04.2015