我使用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
答案 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似乎已经解决了问题。