LoginSignup
0
0

LaravelでFirebase認証を使う

Last updated at Posted at 2024-04-25

記事の内容

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の有無で処理を分岐させれば簡易的なログイン機能が実装できるかと思います!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0