访问 Sorcery oauth 响应数据

Access Sorcery oauth response data

我正在使用带有外部子模块的 Sorcery gem。出于某种原因,我没有收到来自 Facebook 的电子邮件,我很确定我的配置正确。我正在尝试进一步解决此问题,但我无法弄清楚如何读取通过 oauth 返回的数据以验证发生故障的位置。我在哪里可以窥探和阅读这些信息?谢谢!

这是我的魔法配置。

Rails.application.config.sorcery.submodules = [:external]

Rails.application.config.sorcery.configure do |config|

  config.external_providers = [:facebook, :google]

  config.facebook.key = "#{Rails.application.secrets.sorcery_facebook_key}"
  config.facebook.secret = "#{Rails.application.secrets.sorcery_facebook_secret}"
  config.facebook.callback_url = "#{Rails.application.secrets.sorcery_facebook_callback_url}"
  config.facebook.user_info_path = "me?fields=email,first_name,last_name"
  config.facebook.user_info_mapping = {:email => "email"}
  config.facebook.access_permissions = ["email"]
  config.facebook.scope = "email"
  config.facebook.display = "popup"
  config.facebook.api_version = "v2.5"

  config.user_config do |user|
    user.authentications_class = Authentication
  end

  config.user_class = User
end

好吧,从技术上讲,这回答了如何找出正在 returned 的内容的问题。

在您的 oauth 控制器中,如果您调用 access_token.get('me?fields=email') 或您想要的任何字段,您将收到带有 URL 字段集的响应。将 URL 复制到浏览器中,您将获得一个 JSON 数据列表。在我的例子中,我没有收到任何电子邮件,但我可以 return first_name、last_name、名称。不太清楚为什么我仍然收不到电子邮件,但希望这有助于将来有人进行故障排除。

如果您有可用的 access_token,另一种方法是自己构建 URL。

https://graph.facebook.com/me?access_token=<access token goes here>&fields=first_name,last_name,email

可以使用 @access_token.token 从 oauth 控制器检索访问令牌。

更新

太傻了...我的配置是正确的,但自从我进行了适当的更正后,显然从未退出过 Facebook。注销并重新连接 oauth 似乎已经解决了问题。