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

+0

感谢您的回复!是的,你是对的,似乎我错过了很多。我想要达到的是行为 - 用户登录一次。然后他收到有效的令牌让我们说2个星期。在每个应用程序开放后,我们使用服务器验证该令牌,检查仍然有效。如果是 - 进入一个应用程序。如果不是 - 请再次登录。 Firebase可以通过其REST API执行哪些操作? – PolosatiyVjih

+0

我不明白你在说什么。 Firebase身份验证会话是无限期的。登录时,您会获得2种令牌:一种短时间的一小时ID令牌和一种长寿命的刷新令牌。后者可以用来获得新的ID令牌。如果您想拒绝超过2周的令牌,则可以检查ID令牌JWT中的auth_time。如果较旧,则可以在客户端强制进行重新认证。 – bojeil