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