JWTトークンを共有することで、複数のWebサイトでユーザーを認証したいと考えています。トークンはもともとfirebaseによって生成されたものなので、それは良いトークン(jwt.ioでテストされ、うまくいくようです)と仮定します。私はuser.getToken()
でそれを得る。Firebaseの独自のトークンを使用したsignInWithCustomToken()
私はsignInWithCustomToken(token)
と呼んでいますが、いつもエラーauth/invalid-custom-token
とメッセージ"The custom token format is incorrect. Please check the documentation."
が表示されます。
奇妙なのは、https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken...
にHTTP POST要求を行い、HTTP 400を返します。私はlocalhostと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-tokensこれは「IDトークン」です。しかし、カスタムサーバのバックエンドがそれを検証できるのであれば、なぜFirebase自体がそれを行うことができないのですか? Docsが "Firebaseサービスへのユーザを識別するために使用されるJWTトークン"と言っているので、私はそれらの違いは分かりません。以前はFirebase 2.xで動作していました。とにかく、ありがとうございました。 – Tom