我正在尝试为一个网站实现facebook登录/自动注册。请求的作用域有问题。
首先,我尝试使用“default”范围。根据官方文档,它提供了对UserData结构子集的访问。记录如下:
https://developers.facebook.com/docs/facebook-login/permissions/#reference-default
但是,如果我尝试这样做,则会出现一个错误:
Invalid scope: default
我也试着先用一些基本的东西。例如,scope=“id”。然后我得到这个错误:
Invalid scope: id
如果我尝试scope=“email first\u name last\u name middle\u name picture”,那么:
Invalid scope: first_name
到目前为止,唯一有效的方法是scope=“email”,但这还不足以进行自动注册。
此外,文档cleary说,“除了默认的Public Profile字段外,所有权限都要求为你的应用程序启用Facebook登录和客户端OAuth登录,以允许用户或页面授予你的应用程序这些权限。”
https://developers.facebook.com/docs/facebook-login/permissions/
旁注:Facebook似乎没有遵循rfc6749。当出现错误时,Oauth2服务器(
https://tools.ietf.org/html/rfc6749#section-4.1.2
更具体地说是4.1.2.1错误响应)。但Facebook并没有做到这一点。它会在facebook.com上显示一个弹出窗口,如果我在该窗口上按“OK”,它会进入一个无限循环,并不断显示相同的消息:“You are no logged in”(我为什么要这么做?)
更新
:尽管我只使用scope=email,/me api返回了所有字段,包括first\u name、last\u name、email和profile picture。所以这些东西可能不是作用域,而是字段名。但目前还不清楚有哪些范围?文件还是很糟糕。它应该清楚地指出哪些术语是作用域,哪些是数据结构中的字段名。文档中仍然缺少一个完整的作用域列表(或者可能有一个列表,只是我找不到它?)