7

我正在使用 OmniAuth,通过 Facebook 登录后,我得到了我的 omniauth.auth 密钥,如下所示:

user_info: 
  name: Tim Sullivan
  urls: 
    Facebook: http://www.facebook.com/...
    Website: 
  nickname: ...
  last_name: Sullivan
  first_name: Tim
uid: "123456789"
credentials: 
  token: [some token]
extra: 
  user_hash: 
    name: Tim Sullivan
    timezone: -5
    gender: male
    id: "123456789"
    last_name: Sullivan
    updated_time: 2010-12-30T00:52:39+0000
    verified: true
    locale: en_US
    link: http://www.facebook.com/...
    email: tim@myemailaddress.com
    first_name: Tim
provider: facebook

现在,根据文档,电子邮件应该在该user_info部分中,但不是。但是,它在该extra/user_hash部分中。由于我正在剥离extra,它没有被存储,所以后来我遇到了问题。我可以自己添加它,但这并不能解释为什么它一开始就不存在。

为什么不将电子邮件放入该user_info部分?一个错误?无证变更?

4

6 回答 6

3

搬去

email = omniauth["extra"]["raw_info"]["email"]
于 2012-07-02T18:30:07.957 回答
2

哈希“信息”包含用户的所有信息:

email = omniauth["info"]["email"]
于 2012-07-27T22:08:20.917 回答
1

我认为文档不是最新的。我通常在删除之前从额外的哈希中获取它。

email = omniauth["extra"]["user_hash"]["email"]
于 2011-03-02T12:49:26.383 回答
0

我们正在使用带有 FB JSDK 的 omniauth,但我无法收到电子邮件,因为我忽略了 FB.login() 需要“范围”选项这一事实。

 FB.login(function(response) {
   // handle the response
 }, {scope: 'email,user_likes'});

添加选项后(即使在服务器上设置了范围),一切都已修复。

https://developers.facebook.com/docs/reference/javascript/FB.login/v2.2#permissions

于 2014-12-12T01:02:29.790 回答
0

虽然omniauth["info"]习惯并且应该包含这些信息,但我注意到 facebook 似乎给我发送了与 facebook 错误/(功能?)相关联的电子邮件错误。因此,当电子邮件不存在时,我会在此哈希中遇到间歇性错误,这会破坏一切。

经过大量调试后,我发现不破坏代码的最安全方法是使用 Koala 或只是好的 ol REST 调用 FB API,如果omniauth["info"]不包含您需要的信息,则获取登录所需的信息。

于 2014-01-02T18:14:03.630 回答
0

由于您使用的是 Rails 而不是 JavaScript(另一个人回答了 JS),因此您需要特别要求从信息字段哈希返回电子邮件,因为默认情况下它不是。您可以在 config/initializers/omniauth.rb 文件中进行设置,如下所示:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, Rails.application.secrets.omniauth_provider_key, Rails.application.secrets.omniauth_provider_secret,
  :scope => 'email', :display => 'popup', :info_fields => 'name,email'
end

此信息隐藏在omniauth-facebook gem 的 GitHub 自述文件的配置部分的最后。

于 2015-09-21T23:37:31.327 回答