Не удается получить пол в графе API в Android - PullRequest
0 голосов
/ 02 мая 2018
  • Я не могу получить пол здесь в OnCompleted функции
  • Я могу получить другие параметры, такие как id, name, email
  • В настоящее время приложение находится в режиме разработки

Это работало вчера.


Код:

GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject object, GraphResponse response) {
                                Log.v("LoginActivity", response.toString());
                                try {

                                    AccessToken token = AccessToken.getCurrentAccessToken();
                                    String accessToken = token.getToken().toString();
                                    String expiresAt = token.getExpires().toString();
                                    String id = object.getString("id");
                                    String gender = object.getString("gender");

                                } catch (JSONException e) {
                                    e.printStackTrace();
                                    System.out.println(e.toString());
                                }

                            }
                        });

                Bundle parameters = new Bundle();
                parameters.putString("fields", "id, name, email, gender, location, picture.type(large)");
                request.setParameters(parameters);
                request.executeAsync();

Ответы [ 2 ]

0 голосов
/ 28 июля 2018

В вашей https://developers.facebook.com/ учетной записи, в разделе Обзор приложений , щелкните Начать отправку , выберите user_gender из РАЗРЕШЕНИЯ НА ВХОД 1010 * и пройти через этапы подачи.

После того, как Facebook утвердит разрешение user_gender , вы можете использовать его.

Снова в вашей учетной записи разработчика нажмите Настройки , затем Дополнительно и Обновление версии API измените версию API, которую ваше приложение вызывает на v3.1 , и, используя приведенный ниже код, вы получите пол пользователя.

private void attemptToLogIn() {
   LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email", "user_gender"));
   LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        makeGraphRequest(loginResult.getAccessToken());
                    }

                    @Override
                    public void onCancel() {
                    }

                    @Override
                    public void onError(FacebookException error) {

                    }
                });
    }

    public void makeGraphRequest(AccessToken token) {
        GraphRequest request = GraphRequest.newMeRequest(
                token, (object, response) -> {
                    try {
                        String gender = object.getString("gender");
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "name,gender");
        request.setParameters(parameters);
        request.executeAsync();
    }
0 голосов
/ 02 мая 2018

Для вашего токена доступа требуется разрешение user_gender: https://developers.facebook.com/docs/facebook-login/permissions/v3.0#reference-user_gender

...