无法从Facebook请求user_age_range

时间:2018-05-24 10:51:22

标签: android facebook-graph-api

我正在尝试从Facebook登录中获取用户age_rage。 [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上列出。

你能告诉我我的代码出了什么问题吗?

更新:

我之前找到的解决方案不再起作用,但我发现了2个帐户之间的区别。

具有age_range的人具有访问令牌源FACEBOOK_APPLICATION_SERVICE

没有age_range的人有访问令牌来源FACEBOOK_APPLICATION_WEB

我已经从这里的官方文档中进行了研究 https://developers.facebook.com/docs/reference/android/current/class/AccessTokenSource

但我仍然不知道造成这个问题的原因是什么?

1 个答案:

答案 0 :(得分:0)

  

我很确定问题是Facebook没有给我这个   user_age_range权限,因为,在请求权限对话框上   帐户A,age_range根本没有列出,但已列出   帐户B.

AFAIK,您的SDK集成没有任何问题。事情是有一些私人对用户的许可(个人Facebook用户可以决定是否应该向公众看年龄)现在,如果用户没有从设置中公开年龄。即使应用程序要求年龄限制,facebook SDK也无法与您共享。但是,另一方面,如果登录的Facebook用户通过他/她的Facebook帐户提供了年龄公共访问权限,则您的应用程序可以在接受SDK中的权限对话框时获取与年龄相关的信息。

我希望你有意义。