gpt4 book ai didi

Firebase 身份验证 : Admin custom tokens cannot be refreshed after one hour

转载 作者:行者123 更新时间:2023-12-02 06:27:53 27 4
gpt4 key购买 nike

我认为 Firebase Admin SDK 缺少一个非常重要的功能(或者可能是其文档)。

TL; DR:如何使用 Admin SDK 刷新自定义 token ?

文档 ( https://firebase.google.com/docs/auth/admin/manage-sessions ) 说:

Firebase Authentication sessions are long lived. Every time a user signs in, the user credentials are sent to the Firebase Authentication backend and exchanged for a Firebase ID token (a JWT) and refresh token. Firebase ID tokens are short lived and last for an hour; the refresh token can be used to retrieve new ID tokens.

好的。但如何呢?没有提及如何用新的自定义 token 替换刷新 token 。有很多关于如何撤销刷新 token 等的文档...

然而,有一个 REST api 函数说:(https://firebase.google.com/docs/reference/rest/auth/#section-refresh-token)

Exchange a refresh token for an ID token You can refresh a Firebase ID token by issuing an HTTP POST request to the securetoken.googleapis.com endpoint.

但是,您从此 API 调用获得的 access_token (JWT) 也不被接受。 JWT 的格式甚至不相似。以下是检索(解码)的自定义 token 的两个示例:我。使用 Admin SDK 的 admin.auth().createCustomToken(uid) 方法

{
"uid": "9N5veUXXXXX7eHOLB4ilwFexQs42",
"iat": 1521047461,
"exp": 1521051061,
"aud": "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
"iss": "XXX@appspot.gserviceaccount.com",
"sub": "XXX@appspot.gserviceaccount.com"
}
ii.与 https://securetoken.googleapis.com/v1/token?key=[API_KEY]调用

{
"iss": "https://securetoken.google.com/XXX",
"aud": "XXX",
"auth_time": 1521047461,
"user_id": "9N5veUXXXXX7eHOLB4ilwFexQs42",
"sub": "9N5veUXXXXX7eHOLB4ilwFexQs42",
"iat": 1521051719,
"exp": 1521055319,
"email": "jabbar@gmail.com",
"email_verified": false,
"firebase": {
"identities": {
"email": [
"jabbar@gmail.com"
]
},
"sign_in_provider": "password"
}
}

关于这个主题提出了很多问题。也许 Firebase 团队的某个人可以一劳永逸地回答这个问题。请参阅下面的链接

感谢您的宝贵时间!!

最佳答案

您需要将自定义 token 交换为 Id token 和刷新 token ,这提到了 here 。该调用应包含自定义 token 和属性“returnSecureToken”为 true。如果没有添加该属性或者该属性为 false,您将只能获得 ID Token。

完成此操作后,您可以使用刷新 token 在过期后获取新的 ID token 。请参阅documentation .

自定义 token 和 ID token 的生命周期都很短(1 小时),但用途不同,因此格式不同。您使用 Id token 进行经过身份验证的调用,而自定义 token 仅用于启动 session 并获取 ID token 和刷新 token 。

请记住,如果您使用 SDK,则整个工作都由 SDK 处理。

关于Firebase 身份验证 : Admin custom tokens cannot be refreshed after one hour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49287144/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com