(laravel.comの公式にはSocialiteのドキュメントページは存在していません。
イントロダクション
Laravel Scialite(ソシエリート:名士)は、Facebook、Twitter、Google、LinkedIn、GitHub、BitbucketのOAuth認証への記述的で読み書きしやすいインターフェイスを提供します。書くのが面倒な、ソーシャル認証の定例的なコードのほぼすべてを処理します。
新しいアダプタは受け付けていません
他のプラットフォーム向けのアダプタは、コミュニティが管理する、Socialite Providers Webサイトにリストされています。
ライセンス
Laravel Socialiteは、MITライセンスのオープンソースソフトウェアです。
公式ドキュメント
典型的なフォームベースの認証に付け加え、LaravelはLaravel Socialiteを使用したOAuthによる、シンプルで、便利な認証方法を提供しています。Socialiteは現在、Facebook、Twitter、LinkedIn、Google、GitHub、Bitbucketによる認証をサポートしています。
Socialiteを使用開始するには、依存パッケージとしてcomposer.json
ファイルへ追加してください。
composer require laravel/socialite
設定
Scialiteライブラリがインストールできたら、config/app.php
設定ファイルへ、Laravel\Socialite\SocialiteServiceProvider
を登録します。
'providers' => [
// その他のサービスプロバイダ…
Laravel\Socialite\SocialiteServiceProvider::class,
],
さらに、app
設定ファイルで、aliases
配列にSocialite
ファサードを追加します。
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
さらに、アプリケーションで使用するOAuthサービスの認証情報を追加する必要があります。これらの情報はconfig/services.php
設定ファイルへ設置し、アプリケーションで提供するプロバイダに応じて、facebook
、twitter
、linkedin
、google
、github
、bitbucket
をキーとして使用します。例をご覧ください。
'github' => [
'client_id' => 'your-github-app-id',
'client_secret' => 'your-github-app-secret',
'redirect' => 'http://your-callback-url',
],
基本的な使用方法
これで、ユーザを認証する準備が整いました! 2つのルートが必要です。OAuthプロバイダへユーザをリダイレクトするものと、認証後にプロバイダのコールバックを受け取るものです。Socialiteには、Socialite
ファサードを使いアクセスします。
<?php
namespace App\Http\Controllers\Auth;
use Socialite;
class AuthController extends Controller
{
/**
* ユーザをGitHub認証ページヘリダイレクトする
*
* @return Response
*/
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
/**
* GitHubからユーザ情報を取得する
*
* @return Response
*/
public function handleProviderCallback()
{
$user = Socialite::driver('github')->user();
// $user->token;
}
}
redirect
メソッドはOAuthプロバイダへユーザを送る面倒を見ます。user
メソッドは送信されてきたリクエストを読み込み、プロバイダからユーザの情報を取得します。ユーザをリダイレクトする前に、scope
メソッドを用いて、リクエストに「スコープ」をセットすることもできます。このメソッドは既存のスコープをすべて上書きします。
return Socialite::driver('github')
->scopes(['scope1', 'scope2'])->redirect();
もちろん、コントローラメソッドへのルートを定義する必要があります。
Route::get('auth/github', 'Auth\AuthController@redirectToProvider');
Route::get('auth/github/callback', 'Auth\AuthController@handleProviderCallback');
多くのOAuthプロバイダはリダイレクトリクエストで、オプションのパラメータをサポートしています。リクエストにオプションパラメータを含めるには、with
メソッドへ連想配列を渡し、呼び出します。
return Socialite::driver('google')
->with(['hd' => 'example.com'])->redirect();
with
メソッドを使用する場合、state
やresponse_type
のような予約後を渡さないように、気をつけてください。
ユーザの詳細情報の取得
ユーザインスタンスが獲得できたら、より詳細な情報を取得できます。
$user = Socialite::driver('github')->user();
// OAuth Two プロバイダ
$token = $user->token;
$refreshToken = $user->refreshToken; // not always provided
$expiresIn = $user->expiresIn;
// OAuth One プロバイダ
$token = $user->token;
$tokenSecret = $user->tokenSecret;
// 全プロバイダ
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();