Я использую Facebook SDK для входа пользователя. Чтобы получить пол, я добавил разрешение user_gender
в список разрешений.
List<String> accessPermissions = Arrays.asList("user_gender", "email", "user_birthday");
LoginManager.getInstance().logInWithReadPermissions(activity, accessPermissions);
После чего я получаю токен доступа. Теперь я передаю этот токен доступа серверной команде. А бэкэнд-команда использует Facebook Graph API для получения таких сведений о пользователе, как день рождения, пол, адрес электронной почты и т. д.
Они используют следующий API для получения сведений о пользователе.
https://graph.facebook.com/me?access_token=dummyaccesstoken&fields=name,gender,birthday,email
Они могут получить такие детали, как электронная почта и день рождения. Но они не могут получить пол пользователя. Поскольку это GET API, я также вижу, что мы не получаем пол пользователя.
Однако, если мы попытаемся получить детали в самом Android вместо того, чтобы передавать токен доступа на серверную часть, тогда все будет работать нормально.
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
Log.d("Response", "response is "+response.getJSONObject().toString());
// Application code
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link, gender");
request.setParameters(parameters);
request.executeAsync();
Итак, в чем проблема с Facebook Graph API? Почему нельзя вернуть пол? Кто-нибудь еще сталкивался с проблемой?