访问 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 似乎已经解决了问题。
我正在使用带有外部子模块的 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 似乎已经解决了问题。