2017-08-30 6 views
0

電子メール/パスワードでRESTエンドポイントを呼び出して、認証にfirebaseを使用しています。Firebaseは、自動的に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" 
} 

を、私は再びアプリを開いていたときに自動的に再ログインします。 Firebase APIのOAuth認証情報でログインする必要があることを理解しています(https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-with-oauth-credential

しかし、私の初期のメールアドレス/パスワードのログインを考慮して、どのようなパラメータを使用すべきか理解できません。

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

Google IDトークンでFirebase IDトークンを混同しているようです。 ユーザーがverifyPasswordを使用してログインすると、refreshTokenとidTokenがローカルに保存されます。 Firebaseデータベースなどの制限されたリソースへの認証されたアクセスのためにidTokenが必要です。idTokenはしばらくすると通常1時間後に失効します。格納されているrefreshTokenを使用して、新しいidTokenを取得します。https://firebase.google.com/docs/reference/rest/auth/#section-refresh-token

+0

ありがとうございました!そうです、あなたは正しいです、私が多くを逃したようです。私が到達したいのは、ユーザーのログインです。それから彼は有効なトークンを受け取り、2週間と言います。その後に開いているすべてのアプリケーションで、そのトークンがサーバーで有効であることを確認しても、チェックはまだ有効です。はいの場合は、アプリに進みます。そうでない場合は、再度ログインするように頼みます。 FirebaseがREST APIでできることは何ですか? – PolosatiyVjih

+0

あなたの言っていることを理解できません。 Firebase認証セッションは不定です。サインイン時には、2つのタイプのトークンが取得されます。短命の1時間のIDトークンと長時間のリフレッシュトークンです。後者は、新しいIDトークンを取得するために使用できます。 2週間以上経過したトークンを拒否するには、IDトークンJWTでauth_timeを確認します。古い場合は、クライアント側で強制的に再認証を行うことができます。 – bojeil

関連する問題