好的,我知道过去有人问过类似的问题,也进行过一些讨论。我查看了所有帖子,但仍然找不到明确的答案,主要是因为大多数帖子都很旧,而且这些答案中分享的 Facebook 文档已被弃用,而且那些 Facebook 文档页面也已不存在。
我有两个问题 -
问题 1:在与 Facebook 集成进行单点登录 (SSO) 时,我们可以盲目相信 Facebook 返回的电子邮件地址已经验证吗?还是我们必须通过向用户发送包含链接的邮件来确认?我知道,现在如果你用邮箱创建 Facebook 账户,Facebook 会发送一个 6 位数的代码来验证。但是,几十年前创建的账户,他们可能已经验证过,也可能没有验证过,我是否应该担心?另外,我相信 Facebook 还允许你向账户添加其他电子邮件地址。你知道他们是否可以使用这些电子邮件地址登录吗?他们会在 SSO 回调中发送这些地址吗?
问题2:我知道Facebook也允许通过手机号码注册/登录。我的应用使用emailId作为唯一ID,所以如果我没有收到回复邮件,就不允许用户登录。所以这个流程其实并不太复杂。但是,你知道如果用户用手机号码创建了账户,然后又添加了邮箱地址会发生什么吗?Facebook在回调中会发送什么?是邮箱地址、手机号码,还是两者都有?
欢迎任何意见。另外,大多数人是怎么做的?通常情况下,通过发送带有验证链接的电子邮件来确认用户是否是一种好的做法?还是大多数应用都信任 Facebook,并允许用户轻松登录?
是的。Facebook 从未泄露过未经验证的用户邮箱地址,从他们的 API 一开始就一直如此。即使文档中不再明确说明这一点,他们也没有理由对此做出任何改变。
有一段时间,登录对话框允许用户在首次授予权限时选择要与应用共享的注册电子邮件地址
email
。目前尚不确定该功能是否仍然存在。但这些电子邮件地址也只能是经过验证的,并且只能由用户选择。如果用户使用一个电子邮件地址注册您的服务,然后切换到另一个电子邮件地址(他们可以删除该应用程序,然后再次授予其权限)会令人担忧 - 那么请根据应用程序范围内的用户 ID 而不是他们的电子邮件来决定您是否已经拥有他们帐户的记录。
Facebook 不会通过 API 提供用户的手机号码(WhatsApp API 可能有所不同,但这不是您在这里处理的问题。)
如果他们有经过验证的电子邮件,并且您
email
在请求他们的数据时要求提供用户对象的字段,那么您将获得返回的结果。如果他们没有经过验证的邮箱,那么你根本就不会
email
在返回的房源信息中获得任何房源信息。而且也没有电话号码。