一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • Firebase (認証・通知)周りの仕様

概要

Firebase (認証・通知)周りの仕様などの調査になります。

仕様

認証

ログインが成功すると、Firebase で独自の IDトークン が発行されます。
Firebase IDトークンの有効期限は1時間です。
IDトークン自体は JWT 形式となり、ペイロード部に下記のクレームを含みます。

クレーム 説明 備考
exp 有効期限 将来の時点であることが必要です。
この時間は、UNIX エポック時刻からの秒数です。
iat 発行時間 過去の時点であることが必要です。
この時間は、UNIX エポック時刻からの秒数です。
aud 対象 Firebase プロジェクトの ID(Firebase プロジェクトの一意の識別子)であることが必要です。
これは、プロジェクトのコンソールの URL で確認できます。
iss 発行元 “https://securetoken.google.com/<projectId>” であることが必要です。
は、上記の aud で使用されたものと同じプロジェクト ID です。
sub 件名 空ではない文字列、またはユーザーまたはデバイスの uid であることが必要です。
auth_time 認証時間 過去の時点であることが必要です。
ユーザーが認証を行った時間です。

Paylaod:

{
  "iss": "https://securetoken.google.com/your-app",
  "name": "Takahiro Ikeuchi",
  "picture": "https://lh3.googleusercontent.com/-Qpfn58Km92Q/AAAAAAAAAAI/AAAAAAAAAAk/qdpjxL6--7k/photo.jpg
",
  "aud": "your-app",
  "auth_time": 1499662456,
  "user_id": "UtQOa6xxxxxxQmAr5jiUneun1",
  "sub": "UtQOa6xxxxxxQmAr5jiUneun1",
  "iat": 1499662456,
  "exp": 1499666056,
  "email": "takahiro.ikeuchi@gmail.com",
  "email_verified": true,
  "firebase": {
    "identities": {
      "google.com": [
        "1050073xxxxxx7797572"
      ],
      "email": [
        "takahiro.ikeuchi@gmail.com"
      ]
    },
    "sign_in_provider": "google.com"
  }
}

Auth オブジェクトに関連があることが発生すると、Auth リスナーに通知が届きます。

  • 通知
    • ユーザーが前のセッションですでにログイン済みか、または ID プロバイダのログインフローからリダイレクトされたとき
    • ユーザーがログインしたとき(現在ログインしているユーザーとして設定)
    • ユーザーがログアウトしたとき(現在ログインしているユーザーが null になる)
    • 現在ログインしているユーザーのアクセス トークンが更新されたとき。
  • パスワードの変更時
    • Firebase からアクセスと更新の新しいトークンが発行され、古いトークンは有効期限切れになります。
    • セキュリティ上の理由で、ユーザーのトークンは自動的に有効期限切れになるか、ユーザーはすべてのデバイスから自動的にログアウトされます。

SDKの無いPHPから操作するには…

通知

Firebase Cloud Messaging(FCM)

端末の特定には、Firebaseが発行する 登録トークン を使う。
FCM SDK はアプリの起動時にクライアント アプリのインスタンスの登録トークンを生成します。

登録トークンは次のような場合に変更されることがあります。

  • アプリが新しいデバイスで復元される場合
  • ユーザーがアプリをアンインストール / 再インストールする場合
  • ユーザーがアプリのデータを消去する場合

アプリがアンインストールされていた場合、FCM はそのメッセージをすぐに破棄し、登録トークンを無効にします。
それ以降、そのデバイスにメッセージを送信しようとすると NotRegistered エラーが発生します。

参考資料

Firebase 公式ドキュメント

The following two tabs change content below.

李 会永

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア