【发布时间】:2015-10-27 07:49:14
【问题描述】:
这个问题的简短版本是:如果您使用 Firebase 的 OAuth 功能来获取用户的电子邮件地址,您还需要自己确认/验证用户的电子邮件地址吗?
使用 OAuth 的一个常见好处是 - 根据 OAuth 提供商 - 您可以获得确认的电子邮件地址,但在将 Firebase 用于 web 应用时确实如此,例如使用 AngularJS 之类的绑定?
用户验证后,似乎有两个数据对象 - authData 可用于客户端,auth 可用于服务器端的安全规则。虽然authData 包含姓名和电子邮件等详细信息,但auth 只包含一个Firebase uid 加上provider。因此,如果我要获取该用户的电子邮件地址,它必须由客户端提供,因此(理论上)不能被信任?
根据我对 Firebase 文档的理解,如果我要为我的应用使用 GitHub OAuth,我需要执行以下操作:
- 让用户使用 Firebase/GitHub 登录/创建帐户
- 客户端 JS 从 GitHub OAuth 响应中检索电子邮件地址
- 客户端 JS “提交”此电子邮件以进行确认 - 可以通过多种方式完成
- 电子邮件地址应保存在 Firebase 中,状态为“未确认”(这样的字段对用户来说是只读的)
- 我需要自己的服务器端逻辑来处理此类电子邮件提交并发送确认电子邮件请求,例如通过像 Mandrill 这样的东西
- 我需要额外的服务器端逻辑来接收点击确认并在 Firebase 中将电子邮件地址标记为“已确认”
因此 Firebase 可以帮助我完成步骤 1-3,但步骤 4-6 需要通过我自己的服务器端代码来完成?
因此,这个问题的答案是是/否,但有一些理由/解释!
【问题讨论】:
-
是的。这一切看起来都是正确的。
标签: oauth firebase firebase-security