我们有一个应用程序,然后还有一个 Cloud Functions 函数来处理 HTTP 请求。为了保护和定位用户数据,我们使用了从客户端/应用程序生成的令牌,然后将其用作 HTTP 请求的查询参数。
客户端/应用程序(Java)
firebaseUser.getIdToken(true).addOnSuccessListener(getTokenResult -> //HTTP here with Volley where getTokenResult.getToken() is one of the query parameters.
服务器/云功能
// idToken comes from the client app
return admin.auth().verifyIdToken(req.query.idToken)
.then(function (decodedToken) {
var uid = decodedToken.uid;
console.log("User verified: " + uid);
一切正常,但我记得令牌可能在一个小时后过期,所以我的问题是,一旦令牌在 Cloud Function 端过期,我们如何管理令牌刷新,因为我们不想在客户端重复刷新它?< /p>
答案 0 :(得分:0)
Firebase SDK 在幕后自动刷新 ID 令牌。事实上,您不必(从它的外观来看可能不应该在这里)将 true
传递给 getIdToken()
,因为即使您传递 false
,它也会返回有效令牌.
虽然可以在服务器上刷新令牌,但这种情况并不常见。我强烈建议您将令牌刷新留给客户端 SDK,只需使用服务器上的令牌来验证用户。
更具体地说:只需将 false
传递给 getIdToken(false)
并将其留给 Firebase SDK 来处理幕后 ID 令牌的刷新。
firebaseUser.getIdToken(false).addOnSuccessListener(getTokenResult...