Facebook无视范围

时间:2014-10-15 17:32:52

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

我正在使用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应用程序的默认登录权限?

任何指针都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

自7月份Facebook API发生变化以来,您现在必须加入info_fields: 'email, name'

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

应该做的伎俩