PHP WEB制作

Laravel SocialiteでGitHubを利用した認証

投稿日:2019年9月19日 更新日:

Lravel SocialiteでGitHubを利用したOAuthによる認証の手順を紹介します。

1. GithubでOAuthアプリケーションを作成

GitHubにログインし、
[Settings]→[OAuth Apps]→[Register a new application]
より作成画面に進みます。

Laravel SocialiteでGitHubを利用した認証

Application name:アプリケーションの名前
Homepage URL:ホームページのURL
Authorization callback URL:GitHubで認証完了後の戻り先のURL
を指定し、Register applicationをクリックします。

Laravel SocialiteでGitHubを利用した認証

アプリの作成が完了し、
「クライアントID」、「クライアントシークレット」
を情報が表示されたページに遷移いたします。

2. Laravel標準の認証をインストール

Artisanコマンドで以下を実行します。

php artisan make:auth

3. Laravel Socialiteのインストール

3.1 composerでSocialiteをインストールします。

composer require laravel/socialite

3.2 config/app.phpに、サービスプロバイダーを追加します。

'providers' => [
  ...
  Laravel\Socialite\SocialiteServiceProvider::class,
],

3.3 config/app.phpに、ファサードのエイリアスを追加します。

'aliases' => [
  ...
  'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],

4. Laravelの各設定

4.1 config/service.phpに追記いたします。

'github' => [
  'client_id' => env('GITHUB_CLIENT_ID'),
  'client_secret' => env('GITHUB_CLIENT_SECRET'),
  'redirect' => env('GITHUB_URL'),
],

4.2 .envに、以下を追記します。

GITHUB_CLIENT_ID=1.のクライアントID
GITHUB_CLIENT_SECRET=1.のクライアントシークレット
GITHUB_URL=1.のAuthorization callback URL

4.3 routes/web.phpに追記

GitHubの認証ページに転送するためのルート

Route::get('login/github', 'Auth\LoginController@redirectToProvider');

GitHubの認証後に戻るルート

Route::get('/login/callback/github', 'Auth\LoginController@handleProviderCallback');

5. データベースの調整

5.1 usersテーブルのパスワード列にnullを許可するために、composerでdoctrine/dbalをインストールします。

composer require doctrine/dbal

5.2 マイグレーション生成

php artisan make:migration change_users_table_for_socialite

5.3 マイグレーションファイル編集

<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class ChangeUsersTableForSocialite extends Migration {
  /**
  * Run the migrations.
  *
  * @return void
  */
  public function up() {
    Schema::table('users', function (Blueprint $table) {
      $table->string('password')->nullable()->change();
    });
  }

  /**
  * Reverse the migrations.
  *
  * @return void
  */
  public function down() {
    Schema::table('users', function (Blueprint $table) {
      $table->string('password')->nullable(false)->change();
    });
  }
}

5.4 マイグレーションを実行します。

php artisan migrate

6. LoginControllerの編集

GitHubの認証ページヘユーザーを転送するためのルート:redirectToProvider
GitHubの認証後に、戻るルート:handleProviderCallback
を追記します。

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Socialite;
use Illuminate\Support\Facades\Auth;
use App\User;

class LoginController extends Controller {
  public function redirectToProvider() {
    return \Socialite::driver("github")->redirect();
  }

  public function handleProviderCallback() {
    try {
      $user = \Socialite::with("github")->user();
    } catch (\Exception $e) {
      return redirect('/welcome'); // エラーならトップへ転送
    }
    // mailアドレスおよび名前を保存
    $authUser = User::firstOrCreate(['email' => $user->getEmail(),
                                     'name' => $user->getName()]);
    auth()->login($authUser); // ログイン
    return redirect()->to('/home'); // homeへ転送
  }
}

7. ビューにGitHubでログイン用のリンク追加

resources/views/welcome.blade.phpなどの適当な場所に、GitHub認証のリンクを追加します。
<a href="<?php echo url("/login/github"); ?>" >Login Github</a>

 

以上で完了です。

-PHP, WEB制作

関連記事

【2014年のWEBデザイン!】流行するカラー&廃りそうなスタイル

【2014年のWEBデザイン!】流行するカラー&廃りそうなスタイル

2013年も気が付けば残り1週間。早いものですね~(しみじみ) WEBの業界は流行り廃りが激しいもので、 デザインに限って見ても、この1年間でもさまざまな動きがありましたね。 2014年、WEBデザイ …

デザインにおいて余白は重要!おしゃれに見える理由や効果などを例をもとにしてわかりやすく解説!

デザインにおいて余白は重要!おしゃれに見える理由や効果などを例をもとにしてわかりやすく解説!

デザイン設計においては、余白が重要です。適度に余白が配置されることで、コンテンツが見やすくなります。余白がなくコンテンツが敷き詰まった状態は、ユーザビリティが低いため改善が必要でしょう。 本記事では、 …

PHP(CakePHP)の開発でうまく動作しない場合について

PHP(CakePHP)の開発でうまく動作しない場合について

PHP(CakePHP)の開発でうまく動作しない場合の解決方法について何点か紹介します。 – CakePHPのモデルのsave()メソッドでレコードを更新したときに更新日付(modified列)が更新 …

動物や人物の写真を一瞬で切り抜き?!すごすぎる無料ツール「remove.bg」

動物や人物の写真を一瞬で切り抜き?!すごすぎる無料ツール「remove.bg」

こんにちは、デザイナーのAです。 今回は人物や動物が映った写真の背景だけを一瞬で切り抜いてくれる無料ツール「remove.bg」をご紹介します。 ※6月のアップデートデートでかなり対象の幅が広がったよ …

夏にピッタリ!打ち上げ花火をテーマにしたブラシ素材

夏にピッタリ!打ち上げ花火をテーマにしたブラシ素材

こんにちは新人デザイナーTです。 今回は無料で公開されているphotoshop用の打ち上げ花火の演出が簡単に出来るブラシ素材をいくつかご紹介させていただきます。 収録されているファイルの中には様々な打 …