有谁知道如何从 android 平台的 facebook sdk 获取名字、姓氏、电子邮件、ID、生日、性别、家乡、年龄等?

Does anyone know how to get firstname, lastname, email, id, birthday, gender, hometown, age and etc from facebook sdk in android platform?

我是 facebook sdk 的新手。 有谁知道如何从 android 平台的 facebook sdk 获取名字、姓氏、电子邮件、ID、生日、性别、家乡、年龄等?

请告诉我代码?

下面是我试过的

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

我试过了,但还是不行.... 请帮忙

The data you access depends on the permissions someone grants your app and data they chose to share with apps (Link)

这些字段可以是null

请尝试此代码。希望它能获取您 needed.Thanx

的所有数据
 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();
    }

要获得除 userIdnameemail 之外的任何 user-specific data,您必须将您的应用程序提交到 Facebook 控制台以供审核,以便 Facebook 清楚您想如何处理用户个人数据。

如果您的应用正在使用这些数据做一些有用的事情,那么 Facebook 将允许您访问该数据,例如生日、user_friends 和用户性别。 为此,请转到 facebook 开发人员控制台并按照那里的程序进行操作。

希望这会帮助您实现您想要实现的目标。