Facebook SDK for Android GraphUser

2020-05-09 17:08发布

问题:

I am able to access the id, firstname, lastname, gender, and email of a GraphUser by using the following code. But, I also need access to "location", "number of friends", "basic info" and "work company". How can this be done? I have tried other stackoverflow links, and checked the Facebook SDK link, but not getting a break through. Could I be provided code to directly access the required fields in the same way as the data that I already have?
What other permissions would I need?

loginBtn.setReadPermissions(Arrays.asList("public_profile", "email", "user_friends", "user_birthday", "read_friendlists"));
    loginBtn.setUserInfoChangedCallback(new UserInfoChangedCallback() {
        @Override
        public void onUserInfoFetched(GraphUser user) {
            if (user != null) {
                login_text.setText("Please login to continue");
                userDetails = new JSONObject();
                try {
                    Log.d("user birthday", user.getBirthday());
                    userDetails.put("fbId", user.getId());
                    userDetails.put("firstName", user.getFirstName());
                    userDetails.put("lastName", user.getLastName());
                    userDetails.put("gender", user.getProperty("gender").toString());
                    userDetails.put("email", user.getProperty("email").toString());


                } catch (JSONException e) {
                    Log.d("Error: ", "Error setting user settings in FBActivity");
                }
            } else {
                //login_text.setText("You are not logged");
            }

        }
    });

EDIT:

I got everything except the total number of friends an individual has. How can that be done. I have gone through your links and it seems that I need to call another GraphRequest link. But I don't that. I want the total number of friends (no names, no details, just the number). I have added the permission "user_friends". What code should I write to get the number?

回答1:

This is a pretty straightforward answer and the facebook documentation covers these details. https://developers.facebook.com/docs/reference/android/current . https://developers.facebook.com/docs/graph-api

Here is the answer anyway!

You will need user_friends for the number of friends. It returns the total count of friends.

The default permission set called "basic info" has been removed, and replaced by "public profile".

user_location for location.

user_work_history for the work company.

please note : users can choose to not give these permissions to your app, in which case you should handle those scenarios properly, else your app will get rejected in the review process.



回答2:

To get number of friends please refer to the following link:

https://developers.facebook.com/docs/graph-api/reference/v2.4/user/friends

Permissions needed would be: user_friends, which you already have included..

You'll get friends count in field 'summary' in the name of total_count

Similar question: facebook api on android - how can I get the number of friends that a user has?

loginBtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        new GraphRequest(
            loginResult.getAccessToken(),
            "/me/friends",
            null,
            HttpMethod.GET,
            new GraphRequest.Callback() {
                public void onCompleted(GraphResponse response) {
                    Log.i("response", response.getJSONArray().toString()); //find the summary 'total_count' in the response
                }
            }
        ).executeAsync();
    }

    @Override
    public void onCancel() {
    }

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