【发布时间】:2019-03-12 06:29:33
【问题描述】:
我正在尝试为网站实现 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 和个人资料图片。所以也许这些东西不是范围,而是字段名。但目前还不清楚有哪些范围可用?文档似乎仍然很糟糕。它应该清楚地说明哪些术语是范围,哪些是数据结构中的字段名称。并且文档中仍然缺少完整的范围列表(或者可能有一个列表,只是我找不到它?)
【问题讨论】: