访问Sorcery oauth响应数据

时间:2016-04-05 19:54:43

标签: ruby-on-rails facebook oauth sorcery

我使用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

1 个答案:

答案 0 :(得分:0)

嗯,从技术上讲,这回答了如何找出返回内容的问题。

如果你打电话给access_token.get('me?fields=email')或者你想要的任何字段,你的oauth控制器内部会得到一个带有URL字段集的响应。将该URL复制到浏览器中,您将获得数据的JSON列表。在我的情况下,我没有得到任何电子邮件,但我能够返回first_name,last_name,name。不太清楚为什么我仍然无法收到电子邮件,但希望这有助于将来有人排除故障。

另一种方法是,如果您有access_token可用,请自行构建网址。

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

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

<强>更新

太傻了...我的配置正确,但显然从未退出Facebook,因为我做了正确的更正。注销并再次连接oauth似乎已经解决了问题。