此问题的简短版本是:如果您使用Firebase的OAuth功能获取用户的电子邮件地址,您是否仍需要自行确认/验证用户的电子邮件地址?
使用OAuth的一个常见好处是 - 取决于OAuth提供商 - 您可以获得确认的电子邮件地址,但在将Firebase用于网络应用时确实如此。有像AngularJS这样的绑定吗?
用户进行身份验证后,似乎有两个数据对象 - authData
可供客户端使用,auth可用于服务器端的安全规则。虽然authData
包含姓名和电子邮件等详细信息,但auth
仅包含Firebase uid
加provider
。因此,如果我要获取该用户的电子邮件地址,则必须由客户提供,因此(理论上)不可信任?
根据我对Firebase文档的理解,如果我在我的应用中使用GitHub OAuth,我需要执行以下操作:
因此,Firebase可以帮助我完成步骤1-3,但是步骤4-6需要通过我自己的服务器端代码完成吗?
这个问题的答案是肯定/否定,但有一些理由/解释!
答案 0 :(得分:1)
感谢@Kato确认我在问题中的假设是正确的,所以我明确地提供了这个答案,并提供了一个我没有想到的替代方案。
所以简短的回答是,"是的,您需要在使用Firebase OAuth"时自己获取或验证用户的电子邮件,并且上面列出的步骤是单向的。
另一种仍需要服务器端代码但不需要通过电子邮件发送的方法,是让用户将其令牌写入其用户表条目,然后使用服务器端代码从提供商自己检索经过验证的电子邮件地址。例如使用GitHub授权令牌和适当的范围,您可以检索用户经过验证的电子邮件,然后再需要他们再次验证它。