【问题标题】:Facebook ignores scopeFacebook 忽略范围
【发布时间】:2014-10-15 17:32:51
【问题描述】:

我正在使用 Devise 和 omniauth-facebook 为我的网站进行 Facebook 登录。这是在 config/initializers/devise.rb 中定义的:

config.omniauth :facebook, app_id, app_secret, scope: 'email'

对于我的网站,我只需要电子邮件地址。但是,我的 FB 应用默认设置了三个登录权限 - email、public_profile 和 user_friends。

每当单击登录按钮时,FB 对话框都会显示我的应用“将收到以下信息:您的公开个人资料、朋友列表和电子邮件地址。”我不需要朋友列表,也不想阻止用户登录。

我尝试直接操作网址,但也没有用:

user_omniauth_authorize_path(provider, :scope => 'email')

再深入一点,我发现omniauth-facebook 中的默认范围是仅在omniauth-facebook/lib/omniauth/strategies/facebook.rb 中定义的电子邮件:

DEFAULT_SCOPE = 'email'

我在这里遗漏了什么吗? Facebook 是否忽略或覆盖了范围参数?有没有办法更改我的 Facebook 应用的默认登录权限?

任何指针将不胜感激。

【问题讨论】:

  • 如果您使用 API v1.0,它将始终与电子邮件、public_profile 和 user_friends 一样。解决方法是使用 API v2.0 或更高版本
  • 谢谢@WizKid。这让我走上了正确的道路。

标签: ruby-on-rails facebook devise omniauth omniauth-facebook


【解决方案1】:

由于 7 月份 Facebook API 发生变化,您现在必须包含 info_fields: 'email, name'

所以:config.omniauth :facebook, app_id, app_secret, scope: 'email', info_fields: 'email, name'

应该做的伎俩

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2017-10-20
    • 2019-12-07
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多