2017-08-30 81 views
0

我使用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? 我在第一次登錄時收到了什麼嗎?

回答

1

您似乎將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