Firebase,relogin自动使用REST服务
问题描述:
我使用firebase进行身份验证,通过使用电子邮件/密码调用REST端点。Firebase,relogin自动使用REST服务
https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=[API_KEY]
如果用户在数据库中存在,我收到以下格式的JSON:
后{
"kind": "identitytoolkit#VerifyPasswordResponse",
"localId": "ZY1rJK0eYLg...",
"email": "[[email protected]]",
"displayName": "",
"idToken": "[ID_TOKEN]",
"registered": true,
"refreshToken": "[REFRESH_TOKEN]",
"expiresIn": "3600"
}
权,我想,当我再次打开应用程序时自动重新登录。 据我了解,我需要使用该拍在与从火力地堡API(https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-with-oauth-credential)
OAuth协议票据但是,我无法理解什么参数我应该使用要做到这一点,考虑到我最初的电子邮件/密码登录。
API接受如下:
curl 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?key=[API_KEY]' \
-H 'Content-Type: application/json' \
--data-binary '{"postBody":"id_token=[GOOGLE_ID_TOKEN]&providerId=[google.com]","requestUri":"[http://localhost]","returnIdpCredential":true,"returnSecureToken":true}'
我应该用什么来GOOGLE_ID_TOKEN,providerId和requestUri? 我在第一次登录时收到了什么吗?
答
您似乎将Firebase ID令牌与Google ID令牌混淆在一起。 用户通过verifyPassword登录后,可以在本地存储refreshToken和idToken。您需要idToken用于对受限资源(如Firebase数据库等)进行身份验证访问。idToken将在一段时间后过期,通常为一小时。您使用存储的refreshToken通过以下方式获取新的idToken:https://firebase.google.com/docs/reference/rest/auth/#section-refresh-token
感谢您的回复!是的,你是对的,似乎我错过了很多。我想要达到的是行为 - 用户登录一次。然后他收到有效的令牌让我们说2个星期。在每个应用程序开放后,我们使用服务器验证该令牌,检查仍然有效。如果是 - 进入一个应用程序。如果不是 - 请再次登录。 Firebase可以通过其REST API执行哪些操作? – PolosatiyVjih
我不明白你在说什么。 Firebase身份验证会话是无限期的。登录时,您会获得2种令牌:一种短时间的一小时ID令牌和一种长寿命的刷新令牌。后者可以用来获得新的ID令牌。如果您想拒绝超过2周的令牌,则可以检查ID令牌JWT中的auth_time。如果较旧,则可以在客户端强制进行重新认证。 – bojeil