はじめに
この記事で紹介するもの
- Postmanの設定
- GoogleAPIの認証設定
この記事で紹介しないもの
- Firebaseプロジェクトの作成
- アプリ側プッシュ通知の受信設定
背景
以前のFCM HTTP API
サーバーキーを使い回したプロトコル。
→ サーバーキーが漏洩した場合、キーを変えない限り悪用され続ける。
これからのHTTP v1 API
OAuth2 セキュリティ モデルに準じたよりセキュアなプロトコル。
→ アクセストークンが漏洩した場合、悪用される時間は1時間程度。
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プロジェクトが作成済み
- サービス アカウント用の秘密鍵ファイルを取得済み
導入の流れ
- GoogleAPI OAuth同意画面の作成
- Postman Authorizationの設定
1. GoogleAPI OAuth同意画面の作成
まずはOAuth同意画面に遷移します。
Firebaseコンソールより 「プロジェクトの設定」 > 「サービス アカウント」 > 「サービス アカウント権限の管理」
GCPに遷移したらメニューより「APIとサービス」>「OAuth 同意画面」
① OAuth同意画面
認証済みドメインに「getpostman.com」を追加 > 「保存して次へ」
ちなみに、「ユーザーサポートメール」は後述で出てくる同意画面でアクセス拒否された場合に、「管理者にお問い合わせください(メールアドレス)」の表示で利用されるものになります。
② スコープ
- 「スコープを追加または削除」
- フィルタに
Firebase Cloud Messaging API
で絞り込む -
Firebase Cloud Messaging API
にチェックをつける - 「更新」
③ テストユーザー
Postmanでアクセストークンを取得する際にGCPにログインするユーザーを登録します。(※上限100人)
- 「ADD USERS」
- テスト送信するユーザーのメールアドレスを登録
- 「追加」
④ 概要
⑤ 認証情報の取得
Postmanからアクセスする際の認証情報を取得します。
左メニューの認証情報より OAuth2.0 クライアントIDのうち 「Web Client」の編集ボタンを押します。
以下の情報を控えてください。
- ① クライアントID
- ② クライアント シークレット
- ③ 承認済みのリダイレクトURI
2. Postman Authorizationの設定
Postmanを起動し、コレクションの「Authorization」を開きます。
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.messaging
← MESSAGING_SCOPE
アクセストークンの取得
上記の「Get New Access Token」を押します。
すると、Googleのログイン画面がポップアップしますので、前述で登録したテストユーザーでログインします。
権限周りの許可を求めてくるので許可をするとアクセストークンを取得することができます。
Access TokenのAvailable Tokensより「googleapi-oauth2」を選択すると、アクセストークンの反映が完了します。
確認
各リクエストのHeadersを確認すると、既にhidden header
にAuthorization: Bearer ya29...
とアクセストークンが反映されていることが確認できます。
補足
テストユーザーに追加していないアカウントでログインすると、権限がなくエラーとなります。
この時、前述で登録したユーザーサポートメールに問い合わせる旨のメッセージが表示されます。
終わりに
SDKを使うという手間を省いてみたけれども、テストユーザーの追加というプロセスが増えたので、テスターが変わったらテストユーザーのアカウントを追加するといった管理が新たに発生しました。
使い勝手が良くなったかどうかは...