laravel5.7で、sociliteを作ってソーシャルログイン(twitterやfacebookのアカウントでログイン)できるようにしてみた

laravel5.7で、sociliteを作ってソーシャルログイン(twitterやfacebookのアカウントでログイン)できるようにしてみた

参考URL
https://urashita.com/archives/8848
https://qiita.com/niever66/items/d2060d9424f59b887763

0, 各SNSのアカウントで、開発用のプロジェクト生成して、認証キーを取得する

https://apps.twitter.com/
なんか色々と規約が変わって面倒なので、以前作っておいたTwitter Appsを流用

https://developers.facebook.com/apps/
右上のマイアプリをクリックしてプロジェクト生成して、Facebookアカウントでログイン出来るように登録する(サイトurlやコールバック先を設定)

1, laravel標準のログイン認証を実装する
php artisan make:auth

2, ソーシャルログイン用のパッケージをインストール
composer require laravel/socialite

3, socialiteでfacebookログインすると、漢字本名じゃなくてローマ字表記で取得される対策

たった一行修正するだけなのに大騒ぎだ。でもvendorフォルダ以下を直接修正するとupdateで消えちゃうしな…。
以下の3ファイルを生成してオーバーライトする
php artisan make:provider FacebookProvider
app/Socialite/SocialiteManager.php
app/Socialite/SocialiteServiceProvider.php

4, config/app.phpにプロバイダとエイリアスのショートカットを記述(3で作った自作providerを指定)

5, config/services.phpと.envにKEYを記述
※callback(redirect)は、twitter連携アプリに登録したURLじゃないと弾かれる!

6, ログイン画面にソーシャルボタンを追加

7, routes/web.phpにルーティングを記述

8, app/Http/Controllers/Auth/SocialController.phpを新規作成
php artisan make:controller Auth\SocialController

9, このままだとMySQLに登録されないので、登録処理を入れる

app/User.php

ソーシャルログインのために、emailやpasswordはnullableにしておく
database/migrations/xxxxx_create_users_table.php

10, 画面周りを作る
resources/views/auth/login.phpに追加


なんかソーシャルログイン・ボタンの表示がイマイチだけど、見た目だけなので後回しにしよう。

resources/views/home.phpに追加(取得した名前とアイコンを表示)