Невозможно запросить user_age_range из Facebook - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь получить пользователя age_rage от входа в Facebook.[Android]

Я запросил разрешение пользователя Facebook, используя этот код

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_age_range", "email"))

Я протестировал его с 2 учетными записями Facebook.

С учетной записью A (создано 2 года назад), Я не могу получить age_range.

С учетной записью B (созданной недавно) я получаю age_range очень хорошо.

А вот код, который я использую:

LoginManager.getInstance().loginBehavior = LoginBehavior.NATIVE_WITH_FALLBACK
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_age_range", "email"))
LoginManager.getInstance().registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
        override fun onCancel() { ... }

        override fun onError(error: FacebookException) {...}

        override fun onSuccess(result: LoginResult) {
            GraphRequest(
            result.accessToken,
            "me?fields=name,email,age_range&format=json&access_token=${result.accessToken}",
            null, 
            HttpMethod.GET ,
            { response ->
               safeLog("SAFE_LOG", response.jsonObject.toString())
            }).executeAsync()
        }
    })

Я почти уверен, что проблема в том, что Facebook не предоставил мне это разрешение user_age_range, потому что в диалоговом окне с запросом разрешения для учетной записи A age_range вообще не было в списке, но оно было указано в учетной записи B.

Не могли бы вы, ребята, сказать мне, что пошло не так в моем коде?

ОБНОВЛЕНИЕ:

Решение, которое я нашел раньше, больше не работает, но я обнаружил разницу между двумя учетными записями.

Тот, у кого age_range, имеет источник токена доступа FACEBOOK_APPLICATION_SERVICE

Тот, у кого нет age_range, имеет источник токена доступа FACEBOOK_APPLICATION_WEB

Я уже исследовал из офисаал док здесь https://developers.facebook.com/docs/reference/android/current/class/AccessTokenSource

но я до сих пор не знаю, в чем причина проблемы?

1 Ответ

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

Я почти уверен, что проблема в том, что Facebook не предоставил мне это разрешение user_age_range, потому что в диалоговом окне с запросом разрешения для учетной записи A age_range вообще не было в списке, но оно было указано в учетной записи B.

AFAIK, В вашей интеграции SDK нет ничего плохого.Дело в том, что есть определенное разрешение, которое является приватным для пользователя (индивидуальный пользователь Facebook может решить, должен ли возраст быть видимым для публики или нет) Теперь, если пользователь не сделал возраст публичным из настроек.Даже если приложение запрашивает разрешение на возраст, Facebook SDK не сможет поделиться им с вами.Однако, с другой стороны, если вошедший в систему пользователь Facebook предоставил публичный доступ к возрасту со своей учетной записи Facebook, ваше приложение может получить информацию о возрасте, приняв диалоговое окно разрешения из SDK.

Надеюсьэто имеет смысл для вас.

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