【问题标题】:omniauth-facebook does not return set scopeomn​​iauth-facebook 不返回设置范围
【发布时间】:2016-02-06 00:24:12
【问题描述】:

在我的omniauth.rb中

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, Rails.application.secrets[:facebook_app_id], Rails.application.secrets[:facebook_secret], :scope => 'email,public_profile', :display => 'popup', :info_fields => 'email,public_profile'
end

客户端,javascript:

return FB.login(function(response) {
  if (response.authResponse) {
    return window.location = '/auth/facebook/callback;
   }
}, {scope: 'email,public_profile'});

根据 FB API 文档。

当 FB 弹出窗口打开请求权限时,它会正确请求电子邮件和 public_profile。我点击 OK,这就是 request.env['omniauth.auth] 为我提供的唯一信息:

{"provider":"facebook","uid":"XXXXXXX","info":{"name":"XXXXXXX XXXXXXX","image":"http://graph.facebook.com/XXXXXXX/picture"},"credentials":{"token":"XXXXXXX","expires_at":1444467600,"expires":true},"extra":{"raw_info":{ “名称”:“XXXXXXX XXXXXXX","id":"XXXXXXX"}}}

除了全名和头像之外,我看不到电子邮件地址或任何公共信息。

我不知道自己做错了什么,因为我完全遵循了omniauth-facebook gem 的指南:https://github.com/mkdynamic/omniauth-facebook 以及 FB 开发人员文档。

有什么提示吗?

【问题讨论】:

    标签: ruby-on-rails omniauth-facebook


    【解决方案1】:

    您在正确的道路上只需要使用您要从 facebook 提取的字段更新信息字段,public_profile 将不起作用

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :facebook, Rails.application.secrets[:facebook_app_id], Rails.application.secrets[:facebook_secret], :scope => 'email', :display => 'popup', :info_fields => 'email,first_name,last_name'
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多