4
我试图验证由Android中的Firebase认证库在GCE端点中创建的客户端令牌。Google Cloud Endpoint在端点执行异步代码
的如何做到这一点的引导可以发现here
基本上我需要调用从终点(即服务器后端代码不机器人码)此代码段。
FirebaseAuth.getInstance().verifyIdToken(idToken)
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decodedToken) {
String uid = decodedToken.getUid();
// ...
}
});
让我们说,我想执行的代码,并返回用户的Android客户端代码。我应该怎么做?
这是我没有意义的示例代码。但它展现了我想要做的!
@ApiMethod(name = "serverAuth")
public MyUser serverAuth(@Named("token") String token) {
FirebaseAuth.getInstance().verifyIdToken(token)
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decodedToken) {
String uid = decodedToken.getUid();
String email = decodedToken.getEmail();
String name = decodedToken.getName();
Map<String, Object> claims = decodedToken.getClaims();
String claimString = "";
for (Object claim : claims.values()) {
claimString += claims.toString();
}
MyUser user = new MyUser(uid, email, name, claimString);
//How to return this user?
}
});
//This is compile error since user varriable does not exist here
return user;
}
我有谷歌搜索如何在GCE端点执行异步代码。但没有得到。我得到的是关于代码执行的东西,它直到完成才阻塞,然后返回用户。但是,如何编写代码以便上述异步代码被阻塞?
谢谢!有用。但是,我得到错误,用户变量是最终的,不能设置。我通过将用户提升为类私有变量来解决此问题。这仅仅是一个测试代码,因此可以被混淆。但是我仍然有兴趣了解一个更好的方法来做用户变量作为最终变量。 –
是的,你是对的 - 禁止分配最终变量。对不完整的测试样本。但我认为使用类变量并不是最好的解决方法。我宁愿使用“容器”或“包装器”。看到我更新的答案。 – Benoit