Как я могу получить пол пользователя Facebook через токен доступа в Android - PullRequest
0 голосов
/ 31 мая 2018

В Android Studio, используя facebook SDK GraphRequest и токен, я могу получить информацию об учетной записи, кроме пола.

Это мой скрипт, который я пробовал:

GraphRequest request = GraphRequest.newMeRequest(token, (object, response) -> {
    Log.e("fbLoginActivity", object.toString());

    String fbId;
    String fbEmail;
    String fbFirst_name;
    String fbLast_name;
    String fbBirthday;
    String fbGender;
    String fbPhoto;

    try {
        String fbId = object.getString("id");
        String fbEmail = object.getString("email");
        String fbFirst_name = object.getString("first_name");
        String fbLast_name = object.getString("last_name");
        String fbBirthday = object.getString("birthday");
        String fbGender = object.getString("gender"); // <-- ERROR, but when I comment this line, it works (without gender data)
        String fbPhoto = "http://graph.facebook.com/" + fbId + "/picture?type=large";
    } catch (JSONException e) {
        Toast.makeText(mContext, "fb graph JSONException error", Toast.LENGTH_SHORT).show();
    }
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,first_name,last_name,email,gender,birthday,picture.type(large)");
request.setParameters(parameters);
request.executeAsync();

И это мое разрешение на чтение при входе в систему через Faceook:

fbLoginManager.logInWithReadPermissions(
    LoginActivity.this,
    Arrays.asList("email", "public_profile", "user_birthday", "user_photos")
);

Проблема в этой строке:

String fbGender = object.getString("gender");

Итак, я проверил с помощью object.toString()и на самом деле в API не выводится свойство пола:

Log.e("fbLoginActivity", object.toString());

Знаете ли вы какой-нибудь рабочий способ получения пола пользователя на Facebook?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Кажется, здесь нет полезного ответа.Хорошо, что я решил это сам!

Проблема в моем разрешении на чтение , мне просто нужно добавить "user_gender" на мой fbLoginManager.logInWithReadPermissions() вызов.Раньше я думал, что информация о поле включена в "public_profile", но нет.

мой полный код разрешения на чтение:

fbLoginManager.logInWithReadPermissions(
        LoginActivity.this,
        Arrays.asList("email", "public_profile", "user_birthday", "user_gender", "user_link", "user_photos")
);

теперь мой объект имеет свойство пола, object.toString() результат:

{
    "id": // ...
    "first_name":"Taufik",
    "last_name":"Nur Rahmanda",
    "email":"topexgames@yahoo.com",
    "gender":"male", // <-- YEAH!
    "birthday":"07/26/1993",
    // ... etc
}

документация:

https://developers.facebook.com/docs/facebook-login/permissions/v3.0#permissions

0 голосов
/ 31 мая 2018

Facebook не поддерживает получение пола и реального идентификатора пользователя Facebook с помощью Graph API.

Вам нужно найти другой способ узнать пол, может быть, вам нужна библиотека, чтобы найти полна основе имени или чего-то еще.

Вы можете посмотреть на этот ответ здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...