Laravel の Socialite を使用すると、Facebook、Twitter、Google、LinkedIn、GitHub、Bitbucket などのサードパーティ アカウントを使用して Laravel アプリケーションに簡単にログインできます。これらは、既存のユーザーとのサードパーティ接続に使用したり、主要なログイン メカニズムとして使用したりできます。公式ドキュメントにはいくつかの手順が記載されていますが、読んだ後もログイン機能の実装方法がわからない友人もたくさんいます。今日は Github を例として、その実装方法を詳しくリストします。
Composer コマンドラインからインストールします:
$ composer require laravel/socialite
次に、config/app.php に登録します:
'providers' => [ ... Laravel\Socialite\SocialiteServiceProvider::class, ...],'aliases' => [ ... 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ...],
Socialite がアプリケーションに登録されたので、証明書を設定しましょう。
まず、Github アカウントが必要です。次に、「設定」-「OAuth アプリケーション」-「開発者アプリケーション」-「新しいアプリケーションの登録」に移動して、OAuth アプリケーションを作成します。
アプリケーション情報を入力した後:
このうち、「
認可コールバック URL」を「http://your-domain-name.com/auth/github/callback」に設定する必要があります。アプリケーションの実際の状況に応じて設定してください。作成が完了すると、アプリの詳細ページで「クライアントID」と「クライアントシークレット」の値が確認できます。
3. サービス設定
ファイルを開き、Github の認証情報を追加します: 'github' => [ 'client_id' => 'your-github-app-id', 'client_secret' => 'your-github-app-secret', 'redirect' => 'http://your-callback-url',],
で作成したアプリケーションの「
」と「クライアント シークレット」を入力します。 2 番目のステップ そして、上記の「Authorization callback URL」の値を入力します。もちろん、.env ファイルで 3 つの環境変数を定義し、config/services.php の env() 関数を通じてそれらを取得することもできます。 4. ルートを定義します
に追加します (任意の名前にカスタマイズできますが、ここでは便宜上、以下の名前として直接定義されています): Route::get('auth/github', 'Auth\AuthController@redirectToProvider');Route::get('auth/github/callback', 'Auth\AuthController@handleProviderCallback');
これらのコントローラーを完成させましょう方法。
5. コントローラーのメソッド
public function redirectToProvider() { return Socialite::driver('github')->redirect(); } public function handleProviderCallback() { try { $user = Socialite::driver('github')->user(); } catch (Exception $e) { return Redirect::to('auth/github'); } $authUser = $this->findOrCreateUser($user); Auth::login($authUser, true); return redirect('/'); } private function findOrCreateUser($githubUser) { if ($authUser = User::where('github_id', $githubUser->id)->first()) { return $authUser; } return User::create([ 'name' => $githubUser->name, 'email' => $githubUser->email, 'github_id' => $githubUser->id, 'avatar' => $githubUser->avatar ]); }
上記は一般的な実装方法です。 もちろん、独自の方法で実装することもできます。まず Github にジャンプしてユーザー認証を取得し、次に Github に戻り、Github ID に基づいてユーザーを見つけてログインするか、新しいユーザーを作成します。
6. データベース設計
$table->increments('id'); $table->string('github_id')->unique(); $table->string('name'); $table->string('email'); $table->string('avatar'); $table->rememberToken(); $table->timestamps();
ここではデモンストレーションを行っているため、実際のニーズに応じて上記に直接変更できます。 Github から返される情報はおおよそ次のとおりです:
7. User Eloquent
protected $fillable = ['name', 'email', 'github_id', 'avatar'];
上記のコードが具体的にどのように実行されるかを見てみましょう。
8.
ユーザーが上のボタンをクリックすると、Github の認証ページにジャンプし、ユーザーが認証を実行するかどうかを尋ねます。ユーザーが許可すると、auth/github/callback に戻ります。 「認可コールバック URL」はアプリケーション作成時に入力しました。
その後、コールバック関数内のコードが実行されて、既存のユーザーにログインするか、新しいユーザーを作成してログインします。
Laravel によってユーザーが承認されたので、Auth::check()、Auth:user() など、Auth によって提供されるすべてのメソッドを直接使用できるようになります。 Auth::logout() メソッドを実行して、ログアウトするためのログアウト ルートを追加することもできます。以降の操作はLaravel独自の認証システムを使用する場合と同様に行えます。
上記で、Github アカウントを使用して Laravel アプリケーションにログインするすべての手順が完了しました。他のサードパーティ アプリケーションの実装も基本的に同様です。
参照: laravel.com 、mattstauffer.co