我们使用Firebase来验证登录过程,在后端,我们有一个Rest API实现,以验证正在传递的令牌。
我已经修改了.json文件,并在我的代码库中再次进行了验证。我已经从UID中提取了生成令牌的整个过程,这就是它的样子:
public void initialization(){
try {
FileInputStream refreshToken = new FileInputStream("c02955c26b.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(refreshToken))
.setDatabaseUrl("https://164d0.firebaseio.com")
.build();
String uid = "Lp14BXL3xPVW7K8VZX28omynbWx1";
FirebaseAuth firebaseAuth= FirebaseAuth.getInstance(FirebaseApp.initializeApp(options));
System.out.println(" "+firebaseAuth); --> I see this on the console
String customToken = firebaseAuth.createCustomToken(uid);
System.out.println(" "+customToken);
FirebaseToken decodedToken = firebaseAuth.verifyIdToken(customToken);
String uidTranspose = decodedToken.getUid();
System.out.println(" the UID sent is"+uid+"Obtained after transpose is"+uidTranspose);
System.out.println(" the UID captured is this "+uid);
}
catch(Error e){
System.out.println(" "+e.getLocalizedMessage());
e.printStackTrace();
}
finally{
System.out.println("Finally comes here ");
}
}
在创建令牌的某个地方,控制直接流到了finally块;而不记录错误或异常。
我不确定在这里是否缺少任何内容。
编辑1:编辑以添加完整的代码。
编辑2:我可以看到正在创建的令牌。但我无法验证因为它说这是自定义令牌,而不是Id令牌。我不确定是否可以访问Id令牌,或者是否有方法可以验证自定义令牌。
答案 0 :(得分:0)
您无法使用自定义令牌调用verifyIdToken()
。参见Verifying firebase custom token to get token ID fails when using jsonwebtoken