我想通過共享JWT令牌對多個網站上的用戶進行身份驗證。該標記最初由firebase生成,因此我認爲它是一個很好且有效的標記(在jwt.io上測試,似乎很好)。我通過user.getToken()
得到它。signInWithCustomToken()帶有Firebase自己的令牌
當我打電話給signInWithCustomToken(token)
時,我總是收到一個錯誤auth/invalid-custom-token
,並附有信息"The custom token format is incorrect. Please check the documentation."
。
奇怪的是,它做了一個HTTP POST請求到https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken...
,它返回HTTP 400.我嘗試過本地主機和https網站上的活動......但結果相同。我正在使用Firebase 3.3。
任何想法,有什麼可能是錯的?我在舊版Firebase中使用了此功能。
謝謝,但我沒有生成令牌,該令牌由Firebase本身生成並通過authData(firebase.user)發送給我。代碼片段是'onAuthStateChanged(function(user){...})'回調函數中的'user.getToken()'。所以令牌不是自定義的,它是Firebase自己的令牌。在Firebase 2.x中,該函數被稱爲'authWithCustomToken',並且與非定製(原始)令牌一起工作。 – Tom
如果我錯了,請糾正我的錯誤:您正嘗試使用Firebase ID令牌登錄。你不能這樣做。這不是自定義標記。自定義令牌通過signInWithCustomToken交換爲firebase id令牌和刷新令牌。您正嘗試使用Firebase ID令牌在我假設的單獨設備中登錄。這是不可能的。 – bojeil
在https://firebase.google.com/docs/reference/js/firebase.User#getToken中,沒有人將其稱爲「ID令牌」,但您說得對,即在https://firebase.google.com/docs/中auth/server/verify-id-令牌,它是一個「ID令牌」。但是,如果任何自定義服務器後端可以驗證它,爲什麼Firebase本身不能。我沒有看到它們之間的區別,因爲文檔中提到「用於將用戶標識爲Firebase服務的JWT令牌」。它曾經在Firebase 2.x中工作。無論如何,謝謝你的幫助。 – Tom