跨Firebase项目共享Web端认证令牌,Android端验证失败的问题求助
跨Firebase项目共享Web端认证令牌,Android端验证失败的问题求助
各位大佬好,遇到个棘手的问题想请教大家:
我目前有三个独立的Firebase项目,分别对应我的Angular网站、Node.js后端服务(使用Firebase Admin SDK)和Android应用。网站这边用Firebase Authentication实现登录,和后端的配合完全正常——用户在网站登录后,把认证令牌传给后端,后端能顺利获取到登录用户的对象。
但当我把这个网站生成的令牌共享给Android应用,用Android端的Firebase SDK验证时却一直失败。我在Android端写了如下代码:
private void handleWebToken(String webToken) { // Create an AuthCredential using the web token AuthCredential credential = GoogleAuthProvider.getCredential(webToken, null); // Sign in with the AuthCredential FirebaseAuth.getInstance().signInWithCredential(credential) .addOnCompleteListener(task -> { if (task.isSuccessful()) { // User authentication is successful FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { // You can get the user details like email, display name, etc. String email = user.getEmail(); String displayName = user.getDisplayName(); } } else { // User authentication failed } }); }
运行这段代码后,我始终无法获取到有效的用户对象,拿到的user一直是null。
我一开始以为是Android端的Firebase项目没开启对应的认证方法,特意去配置里开启了相关选项,但问题依然存在。
更新记录
- 02-August-2023:后来发现跨Firebase项目共享令牌和用户似乎不是件简单的事。查询相关信息后得知:不同的Firebase项目拥有独立的用户数据库和认证系统,彼此之间并不兼容,没法直接共享用户和令牌?
- 03-August-2023:我不死心,又尝试在Android应用中配置了第二个
FirebaseApp,使用的是网站所在Firebase项目的配置。但调用FirebaseAuth.signInWithCredential(...)还是失败,抛出FirebaseAuthInvalidUserException,调用FirebaseAuth.getCurrentUser()也依然拿不到用户。
有没有大佬遇到过类似的场景?或者有没有可行的方案能实现跨Firebase项目共享Web端的认证令牌,让Android端可以正常验证用户身份?
备注:内容来源于stack exchange,提问作者Shoom Kloom
相关产品推荐
相关产品推荐

