14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LaravelでTwitter認証を実装する

Posted at

#はじめに
シンプルなフォームベースの認証以外やったことがなかったので、Twitter認証を今回実装してみました。
実装の一連の手順をまとめましたので、参考になれば幸いです。

#環境構築
こちらの記事を参考にしてLaravel環境を構築しました。
【超入門】20分でLaravel開発環境を爆速構築するDockerハンズオン

Laravelのバージョン:8.10.0

#ログイン画面作成
こちらの記事を参考にしました
Laravel8 (laravel/ui)でのLogin機能の実装方法〜MyMemo

#Twitter認証
Socialiteを使って認証機能を実装していきます

##TwitterAPIの利用申請
まずは、Twitter APIの取得が必要になるので、Twitterの開発者ページから申請・APIトークン取得を行います。
取得方法はこちらの記事を参考にしました
すこしだけTwitterAPIの利用申請が楽になった件(2020年8月現在)

##Socialiteの設定
認証で必要なSocialiteというライブラリーをインストールします。

composer require laravel/socialite

ちなみにSocialiteが対応しているサービスはTwitter以外に下記も対応。

  • Google
  • Facebook
  • Linkedin
  • Github
  • Gitlab
  • Bitbucket

インストールが終わったら、config/app.phpにprovideとaliasの設定をします。

config/app.php
'providers' => [ 
    Laravel\Socialite\SocialiteServiceProvider::class,
],
'aliases' => [
    'Socialite' => Laravel\Socialite\Facades\Socialite::class,
]

次にTwitter認証情報をconfig/service.phpに設定します。

config/services.php
"twitter" => [
    "client_id" => env("TWITTER_CLIENT_ID"),
    "client_secret" => env("TWITTER_CLIENT_SECRET"),
    "redirect" => env("CALLBACK_URL"),
]

.envファイルにTwitter利用申請で取得した情報を設定します。

.env
TWITTER_CLIENT_ID=TwitterのApi Key
TWITTER_CLIENT_SECRET=TwitterのAPI Secret Key
CALLBACK_URL=コールバックURL

##ルーティングの変更
routes/web.phpにTwitterログインURL、TwitterコールバックURL、TwitterログアウトURLを追加します。

routes/web.php
// TwitterログインURL
Route::get('auth/twitter', 'Auth\TwitterController@redirectToProvider');
// TwitterコールバックURL
Route::get('auth/twitter/callback', 'Auth\TwitterController@handleProviderCallback');
// TwitterログアウトURL
Route::get('auth/twitter/logout', 'Auth\TwitterController@logout');

##コントローラーの作成

php artisan make:controller Auth/TwitterController 
TwitterController
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

use Socialite;

class TwitterController extends Controller
{
    // Twitterログイン
    public function redirectToProvider(){
        return Socialite::driver('twitter')->redirect();
    }

    // Twitterコールバック
    public function handleProviderCallback() {
        try {
            // ユーザー詳細情報の取得
            $user = Socialite::driver('twitter')->user();
        } catch (Exception $e) {
            return redirect('auth/twitter');
        }
        return redirect('/');

    }

    // Twitterログアウト
    public function logout(Request $request) {
        Auth::logout();
        return redirect('/');
    }
}

##Bladeの編集
ログイン、ログアウト部分のURLを変更します。

<a href="/auth/twitter">ログイン</a>
<a href="/auth/twitter/logout">ログアウト</a>

#参考
【超入門】20分でLaravel開発環境を爆速構築するDockerハンズオン
Laravel8 (laravel/ui)でのLogin機能の実装方法〜MyMemo
すこしだけTwitterAPIの利用申請が楽になった件(2020年8月現在)
LaravelでTwitterログインを実装する

14
10
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
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?