Firebase授权登录无法获取用户邮箱


手里的一个海外项目使用Firebase集中管理所有的三方授权登录,在开发过程中遇到了无法获取第三方用户邮箱的问题,所以记录一下,也分享给遇到相同问题的朋友。

Firebase 是 Google Cloud Platform 为开发者设计,提供各种工具,解决基础架构的问题。Firebase 提供基础性工作和工具,从而允许开发者专注于开发优质应用和扩大用户群。

遇到的问题

在Firebase授权登录的设置中,是可以选择是否允许一个用户的多个绑定相同邮箱的平台授权创建多个用户。

Firebase登录设置

Firebase同一邮件地址多登陆设置

举个栗子,Firebase每次授权登录都会产生一个随机码作为Firebase用户的唯一标示。小辉如果在Google绑定的邮箱是[email protected],同时,在Facebook绑定的邮箱也是[email protected]。那么如果上图的设置选择Allow的话,就可以生成两个Firebase用户;选择第一个选项的话,则只会生成一个Firebase用户。

然而实际上的情况,并不是简单上面这种解释的,和同事的实验后,小辉总结了使用Firebase授权登录的流程如下:

Firebase登录流程图

以iOS为例,项目中获取用户信息,通过Firebase提供的user类来获取用户信息。但是当我们开启了同一个email允许绑定多个Firebase用户的时候,出现了user类中没有email的信息。

获取用户信息

解决方案

经过各种查阅资料,发现这个问题其实存在好几年了,然而官方不修复的理由也是比较奇葩。最终总算找到了获取用户授权登录获取邮箱的替代方案。经过实验也是成功的,已经投入到生产代码中。

Android的解决方案

可以结合参考文档2的最后一个回答与参考文档3。

iOS的解决方案

实际上,在iOS获取授权用户信息中还有另外一种方法:

获取第三方绑定信息

更详细说明,请查看参考文档4。

Firebase Android也有和iOS获取授权用户类似的Api,没有时间验证,相信应该也可以使用。

参考文档

  1. Google Group关于此问题的讨论
  2. Github关于此问题的讨论
  3. Andriod的获取授权用户信息的Api说明
  4. iOS获取授权用户信息的Api说明
发布了88 篇原创文章 · 获赞 434 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/y277an/article/details/103845611