使用Java验证Firebase用户(IllegalArgumentException)

使用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

我试图用firebaseAuth在后端验证我的用户,我按照firebase文档在这里连接,并从这里进行令牌验证

在这些文章之后,我复制了这段代码:

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或空?如果我们自己没有看到令牌,甚至没有看到如何从客户端应用程序获取并传递令牌,很难说您是否实际传递了有效的令牌值。