如何通过Firebase UID获取Google用户头像(无需切换至Google+登录)
嘿,刚好之前处理过类似的问题,给你几个可行的方案,不用折腾Google+那套:
最直接的方案:登录时直接获取头像URL
当你用Firebase Auth做Google登录的时候,其实不需要等到拿到UID再去折腾,登录成功后的用户对象里已经包含了Google的头像信息。比如用signInWithPopup或者signInWithRedirect完成登录后,你可以从user.photoURL直接拿到头像的链接,这个链接就是Google用户的头像地址,直接用就行。如果已经登录,补获取头像信息
如果你已经完成登录,只存了Firebase UID,那可以通过Firebase Auth的currentUser.reload()方法刷新用户信息,然后从currentUser.photoURL获取头像。不过要注意,这个前提是用户登录时已经授权了Firebase获取个人资料的权限(默认Google登录会请求这个权限,除非你特意限制了)。为什么不能用Firebase UID直接请求Google接口?
你说得对,Firebase UID和Google用户ID是完全独立的,Google的用户资料接口只认自己的用户ID或者ID Token,不认Firebase的UID。所以直接拿Firebase UID去调Google的接口肯定行不通。退一步的方案:保存Google用户ID备用
如果你确实需要用Google的接口获取头像(比如有特殊需求),那可以在登录成功后,从user.providerData里取出Google的用户ID(providerData[0].uid)并保存下来,之后用这个ID去调用Google的用户资料接口获取头像。不过说实话,Firebase已经给你返回了photoURL,完全没必要多这一步操作。
总结一下,优先用前两个方案,直接用Firebase返回的头像URL最省心,不用额外调用Google的接口。
内容的提问来源于stack exchange,提问作者Paliao

