LaravelでFacebookログインとFacebookAPIを導入するまでの手順メモ
タイトル通り
FacebookログインとAPIを使うまで
もう調べたくないのでメモ
(でもきっとまた調べるんだろうな)
環境
Laravel5.8
Facebookログインを実装
Laravel側
socialiteproviders.netlify.com
基本的にココに書いてあるとおりでいける
任意で追加したのは
config/app.php
'aliases' => [ 'Socialite' => \Laravel\Socialite\Facades\Socialite::class,
あとは表示のために
app/Http/Controllers/Auth/SocialLiteController.php
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Socialite; class SocialLiteController extends Controller { public function index() { return view('auth/index'); } public function login() { return Socialite::driver('facebook')->redirect(); } public function callback() { $user = Socialite::driver('facebook')->user(); dd($user); } }
route/web.php
にルーティング
<?php Route::get('/auth', 'Auth\SocialLiteController@index'); Route::get('/auth/login', 'Auth\SocialLiteController@login'); Route::get('/auth/callback', 'Auth\SocialLiteController@callback');
Facebookアプリ側
ポチポチやるとアプリは作成できるので作成については割愛
アプリ画面から
設定>ベーシック
の画面に行って
- アプリID
- app secret を取得して
Facebookログイン>設定
の画面で
- [ 有効なOAuthリダイレクトURI ] を設定しておく
- 例の場合,
/auth/callback
- 例の場合,
Facebook PHP SDK を入れる
基本的にこれ通り
丁寧すぎて神
composer require facebook/graph-sdk
.env
に追記(FACEBOOK_APP_ID,FACEBOOK_APP_SECRETはログインの時に設定した値と一緒なので書かない)
FACEBOOK_DEFAULT_GRAPH_VERSION=v2.8
config/facebook.php
を作成
<?php return [ 'config' => [ 'app_id' => env('FACEBOOK_KEY', null), 'app_secret' => env('FACEBOOK_SECRET', null), 'default_graph_version' => env('FACEBOOK_DEFAULT_GRAPH_VERSION', 'v2.8'), ], ];
FacebookServiceProvider
を作る
php artisan make:provider FacebookServiceProvider
<?php namespace App\Providers; use Facebook\Facebook; use Illuminate\Support\ServiceProvider; class FacebookServiceProvider extends ServiceProvider { /** * Bootstrap the application services. * * @return void */ public function boot() { } /** * Register the application services. * * @return void */ public function register() { $this->app->singleton(Facebook::class, function ($app) { return new Facebook(config('facebook.config')); }); } }
config/app.php
にprovider登録
'providers' => [ ... App\Providers\FacebookServiceProvider::class, ],
APIを使う
APIの使い方はdocumentから
挙動確認程度なのでControllerにガツンと書いていきます
<?php namespace App\Http\Controllers; use App\User; use Facebook\Facebook; class HomeController extends Controller { public function __construct(User $user, Facebook $facebook) { $this->user = $user; $this->facebook = $facebook; } public function index() { $this->facebook->setDefaultAccessToken($this->user->access_token); dd($this->facebook->get('/me')->getGraphUser()); // 自分の情報 dd($this->facebook->get('/me/friends')->getGraphList()); // 友人一覧 } }
まとめ
動作確認したコード: GitHub - gomayumax/laravel58-test at facebook_auth
調べればできるって感じだった