首页 > 解决方案 > Facebook Oauth2 - 无效的范围ID?

问题描述

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

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

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

但是,如果我尝试这样做,则会收到错误消息:

Invalid scope: default

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

Invalid scope: id

如果我尝试 scope="email first_name last_name middle_name name picture" 那么:

Invalid scope: first_name

到目前为止唯一有效的是 scope="email",但这对于自动注册来说是不够的。

此外,文档明确指出“所有权限,除了默认公共个人资料字段,都需要为您的应用启用 Facebook 登录和客户端 OAuth 登录,以允许用户或页面授予您的应用这些权限。” (您可以在https://developers.facebook.com/docs/facebook-login/permissions/顶部阅读此内容)。因此,范围似乎并非无效,因为我没有为我的应用启用 Facebook 登录。由于某些其他原因,它们是无效的——也许是因为它们不存在?

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

旁注:Facebook 似乎没有遵循 RFC 6749。当出现错误时,Oauth2 服务器(https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2更具体地说是 4.1.2.1 错误回复 )。但 Facebook 并没有这样做。它会在 facebook.com 上显示一个弹出窗口,如果我在该窗口上按“确定”,它会进入无限循环并不断显示相同的消息:“您没有登录”。(我为什么要?)

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

在此处输入图像描述

标签: facebookoauth-2.0

解决方案


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

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


推荐阅读