facebook - 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 和个人资料图片。所以也许这些东西不是范围,而是字段名。但目前还不清楚有哪些范围可用?文档似乎仍然很糟糕。它应该清楚地说明哪些术语是范围,哪些是数据结构中的字段名称。并且文档中仍然缺少完整的范围列表(或者可能有一个列表,只是我找不到它?)
解决方案
文档确实有点误导,但“默认”不是权限/范围,它只是告诉您想要无需额外权限即可获得的数据。如果您只是滚动到顶部,您可以在问题的链接中找到可用的权限。只有该列表很重要,对于默认字段,有一个链接“默认公共配置文件字段”,但是 - 再次 - 不需要范围/权限。
是的,范围和领域之间存在很大差异。例如,该email
字段在经过范围授权后可以使用email
,但该birthday
字段需要经过user_birthday
权限授权。可以在此处找到字段,例如:https ://developers.facebook.com/docs/graph-api/reference/v3.1/user
推荐阅读
- javascript - 为变量赋值 - 简化现有代码
- macos - 如何解决 NSCollectionViewItem 重叠问题?
- java - kotlinOptions.jvmTarget 与 Gradle 变体冲突
- python - 如何访问活动警告过滤器列表?
- javascript - 在表行悬停时调用函数
- windows-services - 使用.net core 3.1中的设置文件,单文件发布windows服务
- python - 当且仅当图保持连接时从nx图中删除节点?
- mysql - 我有一个问题 BCRYPT 与 NodeJs 比较比较 Mysql 数据库中的密码
- database - 组件“DEPARTMENT_ID”必须声明为 PLSQL
- php - 如何使用不同的发件人地址从 php laravel 应用程序发送电子邮件