記事の内容
LaravelでFirebase認証を実装時にちょっと詰まったので、未来の自分が困らない&誰かのだめになればと記録に残しておきます。
事前準備
Composerでkreait/firebase-phpとkreait/laravel-firebaseをインストールする。
composer require kreait/firebase-php
composer require kreait/laravel-firebase
.envにFirebaseのクレデンシャル情報を記載したjsonファイルのパスを記述する。
※jsonファイルはfirebaseからダウンロードしてください。
FIREBASE_CREDENTIALS=firebase_credentials.json
config配下に設定ファイルを作成。
php artisan vendor:publish --provider="Kreait\Laravel\Firebase\ServiceProvider" --tag=config
config/firebase.phpができます。
特に編集はしなくてOKです。
コントローラーの記述
事前準備ができたらartisanコマンドでコントローラーを作成してください。
以下はコントローラーの記述です。
FirebaseController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Kreait\Firebase\Contract\Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\JsonResponse;
class FirebaseController extends Controller
{
/**
* @var Auth
*/
private $auth;
/**
* コンストラクタで認証情報を用意する
* @param Auth $auth
*/
public function __construct(Auth $auth)
{
$this->auth = $auth;
}
/**
* 認証
* @param Request $request
* @return JsonResponse
*/
public function auth(Request $request): JsonResponse
{
$email = $request->input('email');
$password = $request->input('password');
try {
// メールアドレスとパスワードでFirebaseにサインインする
$firebaseSignInResult = $this->auth->signInWithEmailAndPassword($email, $password);
$idToken = $firebaseSignInResult->idToken(); // IDトークン
$expiresIn = $firebaseSignInResult->ttl(); // トークン有効期限
$userToken = $firebaseSignInResult->firebaseUserId(); // ユーザーID
// あとはIDトークンなどを使用した処理を記述する
} catch (\Exception $e) {
Log::error($e->getMessage());
}
}
}
あとはtry~catchの部分をいじって$firebaseSignInResult
の有無で処理を分岐させれば簡易的なログイン機能が実装できるかと思います!