PHPからFirebase Authenticationを利用する
はじめに
この記事では、PHPからFirebaseのAuthentication(認証機能)を利用する方法についてまとめています。
Firebase Authentication ドキュメント
PHPのSDKをインストールする
PHPからFirebase Authenticationを利用するにあたり、つぎのSDKを使用します。
About
Unofficial Firebase Admin SDK for PHP
kreait/firebase-phpが非公式のSDKであることは、ご留意ください。
Composerでkreait/firebase-phpをインストールする
kreait/firebase-phpのインストールには、composerを用います。
$ composer require kreait/firebase-php
Firebaseのcredentialを用意する
kreait/firebase-phpは、Firebaesのcredentialを必要とします。
credentialには、jsonファイルを使えるため、Firebaseの管理画面からダウンロードします。
jsonのダウンロードする手順を、つぎに示します。
-
プロジェクトの概要の隣の歯車を選択 => プロジェクトの設定を選択

-
サービスアカウントタブを選択 => 新しい秘密鍵の生成ボタンを押下


ダウンロードしたjsonファイルは、任意の名前で使用します。
この記事では、credentials.jsonという名前で保存します。
SDKを使用する
Kreait\Firebase\Factoryのインスタンスを生成する
FirebaseのAuthenticationを利用するには、Kreait\Firebase\Factoryのインスタンスから、Kreait\Firebase\Authのインスタンスを生成し、Authクラスが持つメソッドを呼び出すことになります。
そのため、まずはFactoryクラスのインスタンスを生成します。
withServiceAccountの引数には、事前にダウンロードしたcredentials.jsonのパスを指定します。
$factory = (new Factory())->withServiceAccount('<保存ディレクトリ>/credentials.json');
Kreait\Firebase\Authのインスタンスを生成する
Factoryクラスのインスタンスが取得できたので、つぎはKreait\Firebase\Authのインスタンスを生成します。
Authのインスタンスを生成する例を、つぎに示します。
$auth = $factory->createAuth();
SDKのAuthクラスの利用方法
メールアドレスとパスワードでログインする
メールアドレスとパスワードでログインするためには、signInWithEmailAndPasswordメソッドを利用します。
このメソッドは、Kreait\Firebase\Auth\SignInResultを返します。
SignInResultには、例えばidTokenやaccessTokenを取得するメソッドがあります。
$signInResult = $auth->signInWithEmailAndPassword(
email: $email,
clearTextPassword: $password,
);
$signInResult->idToken();
セッションCookieを作成する
セッションCookieを管理する
セッションCookieを作成するには、createSessionCookieメソッドを使用します。
createSessionCookieはidTokenと期限が必要です。
この例では、ログイン時に取得したSignInResultからidTokenを取り出しています。
$fiveMinutes = 60 * 5;
$sessionCookie = '';
try {
$sessionCookie = $auth->createSessionCookie($signInResult->idToken(), $fiveMinutes);
} catch (FailedToCreateSessionCookie $e) {
// error handling
}
TODO
その他のAuthクラスの利用方法を追記予定。
Discussion