我正在尝试从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
但我仍然不知道造成这个问题的原因是什么?
答案 0 :(得分:0)
我很确定问题是Facebook没有给我这个 user_age_range权限,因为,在请求权限对话框上 帐户A,age_range根本没有列出,但已列出 帐户B.
AFAIK,您的SDK集成没有任何问题。事情是有一些私人对用户的许可(个人Facebook用户可以决定是否应该向公众看年龄)现在,如果用户没有从设置中公开年龄。即使应用程序要求年龄限制,facebook SDK也无法与您共享。但是,另一方面,如果登录的Facebook用户通过他/她的Facebook帐户提供了年龄公共访问权限,则您的应用程序可以在接受SDK中的权限对话框时获取与年龄相关的信息。
我希望你有意义。