ruby-on-rails - 使用 Omniauth 注册 Facebook 时,为什么有时用户的电子邮件不包含在身份验证哈希中?

标签 ruby-on-rails facebook email devise omniauth

我正在通过omniauth-facebook gem 使用Rails 3 + Devise 1.5 + OmniAuth,以允许用户通过Facebook 注册我的应用程序。

我的一切工作都很顺利,除了偶尔有人使用 Facebook 注册我的应用程序,并且身份验证哈希不包含用户电子邮件(尽管它包含许多其他属性)。同样,大多数时候我确实收到了电子邮件,但为什么有时不包括在内?有没有办法让用户设置他的 Facebook 隐私设置,使我的应用程序可以获取各种信息,例如姓名、性别和时区,但不能获取电子邮件?我试图在我的 Facebook 个人资料中将我自己的电子邮件设为私有(private),但我仍然能够使用 Facebook 登录我的应用程序。

这是我收到的省略电子邮件的哈希示例(实际信息已被审查):

"name"=>"XXXX XXXXXX", "first_name"=>"XXX", "last_name"=>"XXXXXX", "image"=>"http://graph.facebook.com/XXXXXXXXX/picture?type= square", "urls"=>{"Facebook"=>"http://www.facebook.com/XXXXXXXX"}}, "credentials"=>{"token"=>"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "expires_at"=> 1329364800, "expires"=>true}, "extra"=>{"raw_info"=>{"id"=>"XXXXXXXX", "name"=>"XXXX XXXXXX", "first_name"=>"XXXX", “姓氏”=>“XXXXXX”、“链接”=>“http://www.facebook.com/XXXXXXXXX”、“用户名”=>“XXXXXXXXX”、“性别”=>“女性”、“时区”= >-5, "locale"=>"en_US", "verified"=>true, "updated_time"=>"2012-02-15T00:01:23+0000"}}}

首先十分感谢!

最佳答案

当用户看到 Facebook 的身份验证对话框时,他们可以选择在批准身份验证之前禁止与您共享其电子邮件地址。也许这导致它现在出现在身份验证哈希中。

尝试撤销您的测试帐户,然后通过您的应用重新授权。在 Facebook 的对话框中,它应该列出您请求的所有权限,包括电子邮件。最右边是一个灰色的“X”,表示不允许某个权限。尝试禁止电子邮件,看看它是否重现了您所遇到的情况。

我相信这是与电子邮件隐私设置分开的隐私控制。

关于ruby-on-rails - 使用 Omniauth 注册 Facebook 时,为什么有时用户的电子邮件不包含在身份验证哈希中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9305687/

相关文章:

ruby-on-rails - Rails 3生成仅用于特定操作的支架

ruby-on-rails - Rails - 放置非 Active Record 模型的位置(目录)

ios - Facebook 移动设备重定向到应用商店而不是应用程序

Java servlet 在 doPost 中同步 doGet

ruby-on-rails - PG::错误:错误: ""处或附近的零长度定界标识符“”

ruby-on-rails - 通过 Windows Azure Connect 将 Azure 托管的 Ruby on Rails 应用程序连接到本地 SQL Server

javascript - 登录权限无效

Facebook 即时文章没有提取完整的 RSS,并一直说文章少于 10 篇

c# - SMTP 身份验证错误 "Failure Sendng Mail"

css - 电子邮件中的响应图像