Facebook 从Graph API返回的用户对象间歇性地包含权限数据的空数组
我遇到了这样一种情况:请求用户授予画布应用程序的权限列表时,间歇返回一个空数组 图形请求的外观如下所示:Facebook 从Graph API返回的用户对象间歇性地包含权限数据的空数组,facebook,facebook-graph-api,permissions,facebook-oauth,Facebook,Facebook Graph Api,Permissions,Facebook Oauth,我遇到了这样一种情况:请求用户授予画布应用程序的权限列表时,间歇返回一个空数组 图形请求的外观如下所示: "permissions": { "data": [ { "installed": 1, "email": 1, "bookmarked": 1, "publish_actions": 1 } ] } "permissions": { "data": [ ] } https://graph
"permissions": {
"data": [
{
"installed": 1,
"email": 1,
"bookmarked": 1,
"publish_actions": 1
}
]
}
"permissions": {
"data": [
]
}
https://graph.facebook.com/[uid]?访问令牌=[token]&字段=权限
通常,正常响应如下所示:
"permissions": {
"data": [
{
"installed": 1,
"email": 1,
"bookmarked": 1,
"publish_actions": 1
}
]
}
"permissions": {
"data": [
]
}
偶尔,虽然响应如下所示:
"permissions": {
"data": [
{
"installed": 1,
"email": 1,
"bookmarked": 1,
"publish_actions": 1
}
]
}
"permissions": {
"data": [
]
}
代码将这种情况等同于未授予任何权限的用户,并重新启动身份验证流。问题似乎是间歇性的,因为用户最终进入应用程序,如果我手动重试在日志中找到的一些失败请求,权限将按预期返回
查看用户API文档(http://developers.facebook.com/docs/reference/api/user/),似乎排除了未授予的权限。文档中不清楚在未授予任何权限时会发生什么情况。我们假设一个空映射,它将呈现如下响应:
"data": [
{
}
]
但是,即使响应是空数组,如果不接受至少一些权限,也不能访问代码中发出此请求的点
这给我留下了几个问题,我希望有相关知识的人能回答:
我应该澄清一下,该应用程序需要电子邮件和发布操作权限。AFAIK电子邮件始终标记为“必需”,因此不可删除(新身份验证对话框也是如此)。所以我希望至少电子邮件会一直存在。为了进一步澄清,我将在通过签名请求提供有效的用户身份验证令牌后进行此图形调用,因此我希望用户只有在授权应用程序并授予所需权限后才能到达这一点。我的答案仍然相同。要获得电子邮件,您必须调用图表:
/me?fields=email
,因为这是一种特殊情况,不会通过正常的/me调用返回。至少一个月前是这样的……但正如你所知,Facebook总是在改变我们的事情。如果这让人困惑,很抱歉,但当我提到“电子邮件”时,我指的是“电子邮件”:通常作为“权限”的一部分返回的权限条目。不是人们用“fields=email”请求的实际电子邮件地址。再说一遍,因为我有一个用户访问令牌,我希望该应用程序得到授权,因此希望权限始终包括至少“installed”:1和“email”:1。或者我完全不同意这种假设?(另外还有一种特殊情况,它似乎是间歇性的,尽管我想可能有一个我还没有看到的落水洞)我的答案仍然是一样的。你只获得用户授予你的权限,不多也不少。我很困惑——如果应用程序需要电子邮件权限,并且只有在用户授权应用程序(接受电子邮件权限)后才提供身份验证令牌,并且以后无法删除电子邮件权限,如何在没有电子邮件权限的情况下拥有身份验证令牌?