Firebase Auth:如何使用ID Token实现跨应用匿名用户会话共享?
能否通过Firebase Auth实现匿名用户会话的跨应用共享?
直接使用匿名用户的ID Token跨应用登录是不可行的,原因和可行方案如下:
核心限制
匿名用户是Firebase Auth为单个项目生成的临时身份,其ID Token的受众(aud字段)绑定当前Firebase项目ID,跨项目(不同应用)验证时会因身份标识不匹配被拒绝。此外,Firebase Auth并不支持用匿名用户ID Token完成跨应用登录——相关身份验证方法仅适用于自定义令牌或第三方提供商的身份令牌。
代码问题修正
你提供的代码存在两处问题:
getIdToken()是异步方法,必须添加await关键字:
final idToken = await FirebaseAuth.instance.currentUser!.getIdToken();
- Flutter的Firebase Auth SDK中没有
signInWithToken方法,对应的身份验证方法为signInWithCustomToken或signInWithCredential,但这些方法也无法直接实现匿名用户跨应用登录。
可行替代方案
如果需要实现跨应用的用户身份共享,建议采用以下方式:
- 升级匿名用户为永久身份:将匿名用户关联邮箱/密码、Google账号等持久化身份,用户即可在不同应用中通过同一身份登录。
- 使用自定义令牌(限同项目应用):若两个应用属于同一Firebase项目,可在源应用中基于匿名用户UID生成自定义令牌,在目标应用中调用
signInWithCustomToken登录。但此方案仅适用于同一项目下的多应用,跨项目仍不支持匿名身份共享。
内容的提问来源于stack exchange,提问作者abyesilyurt
相关产品推荐
相关产品推荐

