LoginSignup
7
4

More than 1 year has passed since last update.

SDKを使わずにPostmanだけでFCMのPush通知のテスト送信をしてみる(OAuth2対応)

Last updated at Posted at 2021-09-08

はじめに

この記事で紹介するもの

  • Postmanの設定
  • GoogleAPIの認証設定

この記事で紹介しないもの

  • Firebaseプロジェクトの作成
  • アプリ側プッシュ通知の受信設定

背景

以前のFCM HTTP API
サーバーキーを使い回したプロトコル。
 → サーバーキーが漏洩した場合、キーを変えない限り悪用され続ける。
スクリーンショット 2021-09-08 10.52.16.png

これからのHTTP v1 API
OAuth2 セキュリティ モデルに準じたよりセキュアなプロトコル。
 → アクセストークンが漏洩した場合、悪用される時間は1時間程度。
スクリーンショット 2021-09-08 10.58.08.png

FCM HTTP APIからHTTP v1 APIに以降した際、以前はサーバーキーを使い回してPostmanでPush通知の確認していましたが、これからはアクセストークンを取得してヘッダーに差し込む作業が必要になりました。

公式にAdmin SDKを利用してアクセストークンを取得する方法サンプルコードが紹介されていました。

サンプルコード(nodejs)
 function getAccessToken() {
  return new Promise(function(resolve, reject) {
    const key = require('../placeholders/service-account.json');
    const jwtClient = new google.auth.JWT(
      key.client_email,
      null,
      key.private_key,
      SCOPES,
      null
    );
    jwtClient.authorize(function(err, tokens) {
      if (err) {
        reject(err);
        return;
      }
      resolve(tokens.access_token);
    });
  });
}

しかし、Push通知のテスト送信をするために言語の導入やソースコードの管理が増えてしまうのは、使い勝手が悪いなと感じました。

本記事は

  • 言語の導入不要!
  • SDKを使用したサンプルコード不要!

Postmanのみで完結する設定方法の紹介となります。

導入

前提条件

  • Firebaseプロジェクトが作成済み
  • サービス アカウント用の秘密鍵ファイルを取得済み

導入の流れ

  1. GoogleAPI OAuth同意画面の作成
  2. Postman Authorizationの設定

1. GoogleAPI OAuth同意画面の作成

まずはOAuth同意画面に遷移します。
Firebaseコンソールより 「プロジェクトの設定」 > 「サービス アカウント」 > 「サービス アカウント権限の管理」

スクリーンショット 2021-09-08 13.40.43.jpg

GCPに遷移したらメニューより「APIとサービス」>「OAuth 同意画面」
console.cloud.google.com_iam-admin_serviceaccounts_authuser=0&project=a76spa-toinx-dev.jpg

① OAuth同意画面

User Type「外部」を選択して「作成」
スクリーンショット 2021-09-08 11.42.54.jpg

認証済みドメインに「getpostman.com」を追加 > 「保存して次へ」
console.cloud.google.com_apis_credentials_consent_edit;newAppInternalUser=false_authuser=0&project=shiftwork-mobile-app (2).jpeg

ちなみに、「ユーザーサポートメール」は後述で出てくる同意画面でアクセス拒否された場合に、「管理者にお問い合わせください(メールアドレス)」の表示で利用されるものになります。

② スコープ

  1. 「スコープを追加または削除」
  2. フィルタにFirebase Cloud Messaging API で絞り込む
  3. Firebase Cloud Messaging API にチェックをつける
  4. 「更新」

スクリーンショット 2021-09-08 13.28.59.jpg

非機密のスコープに追加されたら、「保存して次へ」
スクリーンショット 2021-09-08 13.29.31.jpg

③ テストユーザー

Postmanでアクセストークンを取得する際にGCPにログインするユーザーを登録します。(※上限100人)

  1. 「ADD USERS」
  2. テスト送信するユーザーのメールアドレスを登録
  3. 「追加」

スクリーンショット 2021-09-08 13.30.24.jpg

テストユーザーを追加したら「保存して次へ」
console.cloud.google.com_iam-admin_serviceaccounts_authuser=0&project=a76spa-toinx-dev (1).jpg

④ 概要

「ダッシュボードに戻る」
console.cloud.google.com_apis_credentials_consent_edit;newAppInternalUser=false_authuser=0&project=shiftwork-mobile-app.jpg

⑤ 認証情報の取得

Postmanからアクセスする際の認証情報を取得します。
左メニューの認証情報より OAuth2.0 クライアントIDのうち 「Web Client」の編集ボタンを押します。
console.cloud.google.com_apis_credentials_consent_edit;newAppInternalUser=false_authuser=0&project=shiftwork-mobile-app (3).jpg

以下の情報を控えてください。

  • ① クライアントID
  • ② クライアント シークレット
  • ③ 承認済みのリダイレクトURI

console.cloud.google.com_apis_credentials_consent_edit;newAppInternalUser=false_authuser=0&project=shiftwork-mobile-app (4).jpg

2. Postman Authorizationの設定

Postmanを起動し、コレクションの「Authorization」を開きます。
スクリーンショット 2021-09-08 16.14.28.png

Authorizationの設定

トークン取得時の認証情報を設定します。

  • Type: OAuth 2.0
  • Callback URL: ③承認済みのリダイレクトURI
  • Auth URL: https://accounts.google.com/o/oauth2/auth
  • Access Token URL: https://oauth2.googleapis.com/token
  • Client ID: ①クライアントID
  • Client Secret: ②クライアント シークレット
  • Scope: https://www.googleapis.com/auth/firebase.messagingMESSAGING_SCOPE

スクリーンショット 2021-09-08 16.10.18.png
スクリーンショット 2021-09-08 16.10.27.jpg
スクリーンショット 2021-09-08 16.23.17.jpg

アクセストークンの取得

上記の「Get New Access Token」を押します。
すると、Googleのログイン画面がポップアップしますので、前述で登録したテストユーザーでログインします。
スクリーンショット 2021-09-08 16.16.57.jpg

権限周りの許可を求めてくるので許可をするとアクセストークンを取得することができます。
スクリーンショット 2021-09-08 16.18.18.jpg

Access TokenのAvailable Tokensより「googleapi-oauth2」を選択すると、アクセストークンの反映が完了します。
スクリーンショット 2021-09-08 16.34.23.jpg

確認

各リクエストのHeadersを確認すると、既にhidden headerAuthorization: Bearer ya29...とアクセストークンが反映されていることが確認できます。
スクリーンショット 2021-09-08 16.21.09.png

無事、Push通知の送信に成功しました。
スクリーンショット 2021-09-08 17.49.21.jpg

補足

テストユーザーに追加していないアカウントでログインすると、権限がなくエラーとなります。
この時、前述で登録したユーザーサポートメールに問い合わせる旨のメッセージが表示されます。
スクリーンショット 2021-09-08 17.24.05.jpg

終わりに

SDKを使うという手間を省いてみたけれども、テストユーザーの追加というプロセスが増えたので、テスターが変わったらテストユーザーのアカウントを追加するといった管理が新たに発生しました。

使い勝手が良くなったかどうかは...:thinking:

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4