使用Java验证Firebase用户(IllegalArgumentException)
我试图用firebaseAuth在后端验证我的用户,我按照firebase文档在这里连接,并从这里进行令牌验证 在这些文章之后,我复制了这段代码:使用Java验证Firebase用户(IllegalArgumentException),java,firebase,firebase-authentication,Java,Firebase,Firebase Authentication,我试图用firebaseAuth在后端验证我的用户,我按照firebase文档在这里连接,并从这里进行令牌验证 在这些文章之后,我复制了这段代码: FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(GoogleCredentials.getApplicationDefault()).build(); FirebaseApp firebaseApp = F
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.getApplicationDefault()).build();
FirebaseApp firebaseApp = FirebaseApp.initializeApp(options);
String token = "my_token";
FirebaseToken decodedToken = FirebaseAuth.getInstance(firebaseApp).verifyIdToken(token);
String uid = decodedToken.getUid();
FirebaseOptions options = new FirebaseOptions.Builder().setProjectId("my_project_id")
.setCredentials(GoogleCredentials.getApplicationDefault()).build();
我认为理论上这应该是可行的,但当我尝试调用verifyIdToken时,它返回的是IllegalArgumentException,文档中说,当“令牌为null、空,或者如果FirebaseApp实例没有与之关联的项目ID”时,会返回此异常
好。。我的令牌不是null或空的,所以我尝试寻找第二个选项
在我的凭证中,我从项目中下载了私钥并设置了环境变量。如果我调试FirebaseApp,我可以在FirebaseApp->options->credentials->projectId中看到projectId,我还可以在环境中看到json集中的其他值,但我注意到FirebaseApp->options->projectId为空
调试一段时间后,我尝试使用以下代码手动设置项目Id:
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.getApplicationDefault()).build();
FirebaseApp firebaseApp = FirebaseApp.initializeApp(options);
String token = "my_token";
FirebaseToken decodedToken = FirebaseAuth.getInstance(firebaseApp).verifyIdToken(token);
String uid = decodedToken.getUid();
FirebaseOptions options = new FirebaseOptions.Builder().setProjectId("my_project_id")
.setCredentials(GoogleCredentials.getApplicationDefault()).build();
现在FirebaseApp->options->projectId具有my projectId的值,但是发生了相同的错误
有人知道它可能是什么吗?Firebase令牌是错误的,我复制并粘贴了它,但只复制了第一部分,我使用了正确的令牌,现在一切正常,感谢大家的关注我不清楚为什么您会认为字符串“my_令牌”是有效的Firebase Auth令牌。你不能发明你自己的令牌-它们只能来自Firebase客户端应用程序。这不是我使用的令牌,我使用的是来自移动设备的令牌,但出于安全原因,我不会将其放在这里,即使令牌是错误的,我想verifyIdToken应该在project\u id中返回相同的FirebaseAuthException,我在现实中使用了我的真实投影code@LuizWalber您的代码看起来有效。你能给你的问题加上stacktrace吗?此外,您是否100%确定在运行时您的令牌字符串不为null或空?如果我们自己没有看到令牌,甚至没有看到如何从客户端应用程序获取并传递令牌,很难说您是否实际传递了有效的令牌值。