我遇到Android Firebase Auth使用com.google.gms:google-services:3.0.0和的问题com.google.firebase:firebase-auth:9.0.1.
使用Firebase(Google或Facebook)验证后1小时,我收到以下错误消息:
W/PersistentConnection: pc_0 - Authentication failed: expired_token (Auth token is expired)
为什么Firebase令牌在1小时后过期以及如何延长此有效期?
UPDATE
我仍然遇到此问题,Firebase令牌在1小时后过期.现在我收到以下消息:
W/PersistentConnection: pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.)
我感谢任何帮助.
android google-authentication facebook-authentication firebase-authentication
我认为Firebase Admin SDK缺少一个非常重要的功能(或者可能是其文档)。
TL; DR:如何使用Admin SDK刷新自定义令牌?
该文档(https://firebase.google.com/docs/auth/admin/manage-sessions)表示:
Firebase身份验证会话的寿命很长。每次用户登录时,用户凭据都会发送到Firebase身份验证后端,并交换Firebase ID令牌(JWT)和刷新令牌。Firebase ID令牌寿命很短,并且持续一个小时;刷新令牌可用于检索新的ID令牌。
好。但是如何?没有提及如何用新的自定义令牌替换刷新令牌。关于如何撤消刷新令牌等有很多文档...
但是,有一个REST api函数,其内容为(https://firebase.google.com/docs/reference/rest/auth/#section-refresh-token)
将刷新令牌交换为ID令牌您可以通过向securetoken.googleapis.com端点发出HTTP POST请求来刷新Firebase ID令牌。
但是,您从此API调用获得的access_token(JWT)也不被接受。而且JWT的格式甚至不相似。以下是检索(解码)的自定义令牌的两个示例:使用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"
}
Run Code Online (Sandbox Code Playgroud)
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"
}
}
Run Code Online (Sandbox Code Playgroud)
有关此主题的问题很多。也许Firebase团队的某人可以一劳永逸地回答它。见下面的链接
谢谢你的时间!!