Open4

フロントエンドの開発前にFirebase Authenticationのトークンを取得したい

awonosukeawonosuke

タイトルにある通りのことをPostmanを利用して行いたい。
メールアドレス、パスワードでの認証を行い、トークンを取得したい
→今回は ”ID”トークンの取得 を目的とする

awonosukeawonosuke
  • Firebase Auth REST APIのメールアドレス・パスワード認証のエンドポイント
    https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]
  • リクエストペイロード
    • メールアドレス
    • パスワード
    • returnSecureToken
      • ID・リフレッシュトークンを返すかどうか
      • 常にtrueをセットしておく必要あり
  • レスポンスペイロード
    • 一旦無視で

https://firebase.google.com/docs/reference/rest/auth?hl=ja#section-sign-in-email-password

awonosukeawonosuke

最終的なPre-request Script

  • 環境変数リスト
    • API_KEY:Firebaseプロジェクトの設定画面から取得
    • AUTH_EMAIL, AUTH _PASSWORD:ユーザーの認証情報
    • FIREBASE_ID_TOKEN:これをリクエストヘッダに入れて、アプリケーションのバックエンドの認証が必要なAPIを利用する
const postRequest={
    url: 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=' + pm.environment.get('API_KEY'),
    method: 'POST',
    body: {
      mode: 'raw',
      raw: JSON.stringify({
        email: pm.environment.get('AUTH_EMAIL'),
        password: pm.environment.get('AUTH_PASSWORD'),
        returnSecureToken: true  
      }),
    },
    header: {
        'Content-Type': 'application/json'
    },
};

pm.sendRequest(postRequest, function (error, response) {
    if (error) {
        console.log(error);
    }
    const json = response.json();
    pm.test('response has idToken', () => {
        pm.expect(json).to.have.own.property('idToken');
        const idToken = json.idToken;
        console.log('idToken', idToken);
        pm.environment.set('FIREBASE_ID_TOKEN', idToken);
    });
});