2015-10-27 59 views
1

这个问题的简短版本是:如果您使用Firebase的OAuth功能获取用户的电子邮件地址,您是否仍然需要自己确认/验证用户的电子邮件地址?Firebase - 无法相信OAuth返回的详细信息?

使用OAuth的一个常见好处是 - 根据OAuth提供商 - 您可以获得确认的电子邮件地址,但在使用Firebase进行Web应用时,情况确实如此。与AngularJS的绑定?

用户验证后,似乎有两个数据对象 - 可用于客户端的authData和可用于服务器端的安全规则的auth。虽然authData包含名称和电子邮件等详细信息,但auth仅包含Firebase uidprovider。因此,如果我要获得该用户的电子邮件地址,它必须由客户提供,因此不能(在理论上)被信任?

根据我的火力地堡的文档的理解,如果我使用的GitHub的OAuth我的应用程序,我需要做类似如下:

  1. 获取用户的登录/与火力地堡创建账户/ GitHub的
  2. 客户JS检索从GitHub的OAuth回应的电子邮件地址
  3. 客户JS“提交”这封电子邮件确认 - 可以做多种方式
  4. 电子邮件地址应与状态保存在火力地堡“未经证实的”(如一个字段只读t用户)
  5. 我需要我自己的服务器端逻辑来处理这样的电子邮件提交并发送确认电子邮件请求,例如,通过类似山魈
  6. 我需要更多的服务器端逻辑接收点击确认和标记中的电子邮件地址为“确认”火力地堡

因此火力地堡能帮助我的步骤1-3,但第4步-6需要通过我自己的服务器端代码来完成?

因此,对这个问题的回答是“是/否”,但有一些理由/解释!

+0

是的。这一切看起来正确。 – Kato

回答

1

感谢@Kato确认我在问题中的假设是正确的,所以我会明确提供这个答案,并提供一个我没有想到的替代方案。

所以简短的回答是,“当您使用Firebase OAuth时,您需要自己获取或验证用户的电子邮件”,并且上面列出的步骤是单向的。

另一种方法,仍然需要服务器端的代码,但需要发送电子邮件,将有用户写自己的礼物给他们的用户表项,然后让服务器端代码中使用该检索经过验证的电子邮件来自供应商自己的地址。例如使用GitHub授权令牌和适当的范围,您可以检索用户已验证的电子邮件,而不需要再次向您验证。