Facebook Oauth2-无效的范围ID?

时间:2018-10-07 10:55:07

标签: facebook oauth-2.0

我正在尝试为网站实施Facebook登录/自动注册。请求的范围存在问题。

首先,我尝试使用“默认”范围。根据官方文档,它提供对UserData结构子集的访问。它记录在这里:

https://developers.facebook.com/docs/facebook-login/permissions/#reference-default

但是,如果我尝试这样做,则会出现错误:

Invalid scope: default

我也尝试过先使用一些基本的东西。例如,scope =“ id”。然后我得到这个错误:

Invalid scope: id

如果我尝试scope =“ email first_name last_name middle_name名称图片”,那么:

Invalid scope: first_name

到目前为止唯一有效的方法是scope =“ email”,但这不足以进行自动注册。

此外,文档明确指出:“除默认公共配置文件字段外,所有权限均要求为您的应用程序启用Facebook登录名和客户端OAuth登录名,才能允许用户或页面向您的应用程序授予这些权限。” (您可以在https://developers.facebook.com/docs/facebook-login/permissions/的顶部阅读此内容)。似乎范围不是无效的,因为我没有为我的应用启用Facebook登录。它们因其他原因无效-也许是因为不存在?

我想知道如果这些范围无效,为什么要记录这些范围?在哪里可以找到有效的?

旁注:Facebook似乎未遵循RFC6749。出现错误时,将出现Oauth2服务器(https://tools.ietf.org/html/rfc6749#section-4.1.2,更具体地说是4.1.2.1错误响应)。但是Facebook不会这样做。相反,它在facebook.com上显示一个弹出窗口,如果我在该窗口上按“确定”,它将进入无限循环并不断显示相同的消息:“您尚未登录”。 (为什么?)

更新:即使我仅使用scope = email,/ me api仍返回了所有字段,包括first_name,last_name,email和个人资料图片。因此,也许这些不是范围,而是字段名称。但是仍然不清楚哪些范围可用?该文档似乎仍然很糟糕。它应该清楚地说明哪些术语是范围,哪些是数据结构中的字段名称。而且文档中仍然缺少范围的完整列表(或者也许有一个列表,只是我找不到它?)

enter image description here

1 个答案:

答案 0 :(得分:1)

这些文档确实有点误导,但是“默认”不是权限/范围,它只是告诉您希望数据可以在没有附加权限的情况下获得。如果您只是滚动到顶部,则可以在问题的链接中找到可用的权限。只有该列表很重要,对于默认字段,有一个链接“默认公共配置文件字段”,但是-再次-不需要范围/权限。

是的,范围和字段之间存在很大差异。例如,可以在使用#include范围进行授权后使用email字段,但是email字段需要具有birthday权限的授权。可以在此处找到字段,例如:https://developers.facebook.com/docs/graph-api/reference/v3.1/user