【问题标题】:How to ensure Facebook users provides their emails?如何确保 Facebook 用户提供他们的电子邮件?
【发布时间】:2012-10-11 07:14:04
【问题描述】:

问题

我正在开发的网站是一个 Rails 应用程序,它允许用户使用他们的 Facebook 帐户登录。

在 Facebook Auth Dialog 页面上,要求他们提供基本信息和电子邮件。然后将电子邮件保存到数据库中。

但是,最近我注意到有很多用户的电子邮件是nil""。我使用 Open Graph API (https://graph.facebook.com/#{id}/permissions) 检查了他们的权限。其中一些授予了email 权限,而另一些则没有。

我不知道这是怎么发生的。

我的实验

1

虽然the documentation 说:

如果您使用的是增强型身份验证对话框,则以下权限在身份验证流程中是用户不可撤销的。 如果您在首次身份验证过程中向用户请求这些权限,用户必须授予这些权限才能继续并授权您的应用程序

在 Auth Dialog 页面 (https://www.facebook.com/dialog/permissions.request?app_id=...&display=page&next=...&response_type=code&perms=email&fbconnect=1),我可以删除 perms=email 参数,这样就不会请求电子邮件了。

如果我使用此对话框登录,则该应用不会收到电子邮件地址。

2

在应用程序 > 设置 > 权限中,我尝试设置一些我不需要的权限。 (在我实验之前,设置是空的)。

但这些设置对身份验证过程没有影响。

问题

鉴于我的设置(Rails + Devise + Omniauth),是否可以确保用户在登录前授予电子邮件权限?

【问题讨论】:

    标签: ruby-on-rails facebook devise omniauth facebook-oauth


    【解决方案1】:

    $permissions = $facebook->api("/me/permissions"); if(array_key_exists('email', $permissions['data'][0])) { // 权限被授予! } 别的 { // 我们没有权限 }

    【讨论】:

    • 嗨@dythffvrb,感谢您的回答。我知道用于检查用户权限的 api。但是在Facebook端就不能停止登录吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2012-07-21
    • 2014-05-17
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多