Velruse Facebook 个人资料没有电子邮件

Velruse Facebook profile has no email

我正在使用 Pyramid 和 Velruse 对用户进行身份验证,当用户尝试通过 Facebook 进行身份验证时,我刚刚看到一个异常。这里的错误是 KeyError: 'verifiedEmail'

// Callback view for Facebook.
@view_config(                                                                   
    context='velruse.AuthenticationComplete',                                   
)                                                                           
def authenticate_complete(request):                                             
    context = request.context
    email = context.profile['verifiedEmail']
    ...

查看 Velruse code 似乎 Facebook 个人资料可能不包含电子邮件信息,尽管 Facebook 声明该电子邮件是我的应用程序默认批准的信息。

这里哪里出了问题?这是我可能必须处理的 Facebook 用户设置,还是我的代码中缺少某些内容?

Facebook states that the email is information approved by default for my app

email scope/permission 不需要登录审核,但您必须将其作为身份验证流程的一部分进行请求,以便系统提示用户与您的应用程序共享。

用户可能会拒绝您访问其电子邮件的请求。此外,一些用户使用 phone 号码登录,可能根本没有 Facebook 存档的电子邮件地址。

简短回答:一些用户不会提供或收到电子邮件。您的应用程序需要考虑到这一点。