Firebase 云功能上的 Firebase 令牌刷新

时间:2021-01-26 09:28:35

标签: node.js firebase firebase-authentication google-cloud-functions

我们有一个应用程序,然后还有一个 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>

1 个答案:

答案 0 :(得分:0)

Firebase SDK 在幕后自动刷新 ID 令牌。事实上,您不必(从它的外观来看可能不应该在这里)将 true 传递给 getIdToken(),因为即使您传递 false,它也会返回有效令牌.

虽然可以在服务器上刷新令牌,但这种情况并不常见。我强烈建议您将令牌刷新留给客户端 SDK,只需使用服务器上的令牌来验证用户。

更具体地说:只需将 false 传递给 getIdToken(false) 并将其留给 Firebase SDK 来处理幕后 ID 令牌的刷新。

firebaseUser.getIdToken(false).addOnSuccessListener(getTokenResult...