从Graph API返回的用户对象间歇性地包含权限数据的空数组

时间:2012-01-31 23:10:47

标签: facebook facebook-graph-api permissions facebook-oauth

我遇到的情况是,请求用户授予画布应用程序的权限列表会间歇性地返回一个空数组。

图形请求看起来像这样:

https://graph.facebook.com/ [UID] =的access_token [令牌]&安培;字段=权限

通常,正常响应看起来像这样:

"permissions": {
  "data": [
    {
        "installed": 1,
        "email": 1,
        "bookmarked": 1,
        "publish_actions": 1
     }
  ]
}

有时虽然回复看起来像这样:

"permissions": {
  "data": [

  ]
}

代码将此情况等同于未授予任何权限的用户并重新启动身份验证流程。问题似乎是间歇性的,因为用户最终会进入应用程序,如果我手动重试我在日志中找到的一些失败的请求,则会按预期返回权限。

查看用户API文档(http://developers.facebook.com/docs/reference/api/user/),似乎排除了未授予的权限。从文档中不清楚当没有授予权限时会发生什么。人们会假设一张空地图,这会产生如下响应:

"data": [
  {
  }
]

但是,即使响应是一个空数组,在不接受至少一些权限的情况下,也不应该在代码中发出此请求的点。

这给我留下了一些问题,我希望有相关知识的人可以回答:

  1. 在任何情况下,用户授予应用程序的权限都不能通过Graph API获得吗?
  2. 在没有授予任何权限的情况下,用户是否可以授权使用画布应用程序? (取消auth对话框会产生带有其他查询字符串参数的请求,处理方式不同)
  3. 在没有取消授权应用程序的情况下,用户是否可以撤销最初授予的权限?
  4. 修改

    根据下面的讨论,我想澄清一下,我的应用需要电子邮件许可,但似乎不可撤销。该应用程序始终需要电子邮件权限,因此不应该在没有该权限的情况下进行旧版安装。

1 个答案:

答案 0 :(得分:0)

  1. 不,不是我的知识。
  2. 这种情况称为基本权限,登录期间在scope参数中未指定其他权限
  3. 是的,应用用户可以撤消某些权限。转到(http://www.facebook.com/settings?tab=applications)并单击其中一个应用程序(例如Groupon或音乐或YouTube)上的编辑,您可以看到用户可以删除某些权限随时。所以你的应用程序读取它仍然可用的权限是很好的。它可能会为您节省一些浪费的图形调用,使您无法再获得对象/操作。