Кто-нибудь знает, как получить имя, фамилию, адрес электронной почты, идентификатор, день рождения, пол, родной город, возраст и т. Д. С Facebook SDK на платформе Android? - PullRequest
0 голосов
/ 11 января 2019

Я новый для Facebook SDK. Кто-нибудь знает, как получить имя, фамилию, адрес электронной почты, идентификатор, день рождения, пол, родной город, возраст и т. Д. С Facebook SDK на платформе Android?

Пожалуйста, покажите мне код?

ниже это то, что я пытался

callbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions( "public_profile", "email", "user_birthday", "user_friends");


loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken accessToken = AccessToken.getCurrentAccessToken();
            boolean isLoggedIn = accessToken != null && !accessToken.isExpired();

            GraphRequest request = GraphRequest.newMeRequest(
                    accessToken,
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {
                            // Insert your code here
                            try {
                                if (object != null) {
                                    JSONObject obj = response.getJSONObject();
                                     id = obj.getString("id");
                                     name = obj.getString("name");
                                     birthday = obj.getString("birthday");
                                     email = obj.getString("email");
                                    String gender = obj.getString("gender");
                                     showUserInfoToast();

                                }
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }
                    });

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


        }

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

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

Я пытался, но это не работает .... пожалуйста помогите

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Пожалуйста, попробуйте этот код. Надеюсь, он получит все необходимые данные. Спасибо

 public void onSuccess(final LoginResult loginResult) {
    Log.e("bug", "facebook sign in success");

    if (loginResult != null) {

        Profile profile = Profile.getCurrentProfile();

        if (profile != null) {
            firstName = profile.getFirstName();
            lastName = profile.getLastName();
            social_id = profile.getId();
            profileURL = String.valueOf(profile.getProfilePictureUri(200, 200));
            Log.e(TAG, "social Id: " + profileURL);
        }

        GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject object, GraphResponse response) {
                Log.e("bug", "facebook social_id=>" + social_id + " toeken" + loginResult.getAccessToken().getToken());
                Log.e("bug", "graph response=>" + object.toString());
                try {
                    if (object.has("name")) {
                        String[] name = object.getString("name").split(" ");
                        firstName = name[0];
                        lastName = name[1];
                    }
                    email = object.has("email") ? object.getString("email") : "";
                    social_id = object.has("id") ? object.getString("id") : "";
                    socialSignUp("facebook");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });

        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,first_name,name,last_name,email,gender,birthday");
        request.setParameters(parameters);
        request.executeAsync();
    }
0 голосов
/ 11 января 2019

Чтобы получить любые user-specific data, кроме userId, name и email, вы должны отправить свое приложение на рассмотрение на консоль facebook, чтобы у Facebook была ясность относительно того, что вы хотите делать с личными данными пользователя.

Если ваше приложение работает с этими данными, то Facebook предоставит вам доступ к таким данным, как дата рождения, user_friends и пол пользователя. Для этого перейдите в консоль разработчика facebook и выполните там процедуру. facebook flow

Надеюсь, это поможет вам достичь того, чего вы хотите достичь. See this

0 голосов
/ 11 января 2019

Доступ к данным зависит от разрешений, которые кто-то предоставляет вашему приложению, и данных, которые он выбрал для обмена с приложениями ( Ссылка )

Эти поля могут быть null

...