ホームページ > バックエンド開発 > PHPチュートリアル > Github などのサードパーティ アカウントを使用して Laravel アプリケーションにログインします。

Github などのサードパーティ アカウントを使用して Laravel アプリケーションにログインします。

WBOY
リリース: 2016-06-23 13:11:31
オリジナル
1185 人が閲覧しました

Laravel の Socialite を使用すると、Facebook、Twitter、Google、LinkedIn、GitHub、Bitbucket などのサードパーティ アカウントを使用して Laravel アプリケーションに簡単にログインできます。これらは、既存のユーザーとのサードパーティ接続に使用したり、主要なログイン メカニズムとして使用したりできます。公式ドキュメントにはいくつかの手順が記載されていますが、読んだ後もログイン機能の実装方法がわからない友人もたくさんいます。今日は Github を例として、その実装方法を詳しくリストします。

1. Socialite をインストールします

Composer コマンドラインからインストールします:

$ composer require laravel/socialite
ログイン後にコピー

次に、config/app.php に登録します:

'providers' => [    ...    Laravel\Socialite\SocialiteServiceProvider::class,    ...],'aliases' => [    ...    'Socialite' => Laravel\Socialite\Facades\Socialite::class,    ...],
ログイン後にコピー

Socialite がアプリケーションに登録されたので、証明書を設定しましょう。

2. Github アプリケーションを作成します

まず、Github アカウントが必要です。次に、「設定」-「OAuth アプリケーション」-「開発者アプリケーション」-「新しいアプリケーションの登録」に移動して、OAuth アプリケーションを作成します。

アプリケーション情報を入力した後:

このうち、「

認可コールバック URL

」を「http://your-domain-name.com/auth/github/callback」に設定する必要があります。アプリケーションの実際の状況に応じて設定してください。作成が完了すると、アプリの詳細ページで「クライアントID」と「クライアントシークレット」の値が確認できます。

3. サービス設定

config/services.php

ファイルを開き、Github の認証情報を追加します:

'github' => [    'client_id' => 'your-github-app-id',    'client_secret' => 'your-github-app-secret',    'redirect' => 'http://your-callback-url',],
ログイン後にコピー
で作成したアプリケーションの「

クライアント ID

」と「クライアント シークレット」を入力します。 2 番目のステップ そして、上記の「Authorization callback URL」の値を入力します。もちろん、.env ファイルで 3 つの環境変数を定義し、config/services.php の env() 関数を通じてそれらを取得することもできます。 4. ルートを定義します

次のルートを

routes.php

に追加します (任意の名前にカスタマイズできますが、ここでは便宜上、以下の名前として直接定義されています):

Route::get('auth/github', 'Auth\AuthController@redirectToProvider');Route::get('auth/github/callback', 'Auth\AuthController@handleProviderCallback');
ログイン後にコピー
これらのコントローラーを完成させましょう方法。

5. コントローラーのメソッド

AuthAuthController に次のメソッドを追加します。

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. データベース設計

Github 固有の情報を保存するには、ユーザーの移行を変更する必要があります。 Github は多くの情報を返してくれるので、そのうちのいくつかをここに保存するために選択します。

$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

Github 情報を保存できるように User Eloquent モデルを変更します:

protected $fillable = ['name', 'email', 'github_id', 'avatar'];
ログイン後にコピー

上記のコードが具体的にどのように実行されるかを見てみましょう。

8.

を使用して、ログインが必要な次のリンクを追加します。そのターゲット アドレスは、上で追加したルート auth/github を指します。

ユーザーが上のボタンをクリックすると、Github の認証ページにジャンプし、ユーザーが認証を実行するかどうかを尋ねます。ユーザーが許可すると、auth/github/callback に戻ります。 「認可コールバック URL」はアプリケーション作成時に入力しました。

その後、コールバック関数内のコードが実行されて、既存のユーザーにログインするか、新しいユーザーを作成してログインします。

Laravel によってユーザーが承認されたので、Auth::check()、Auth:user() など、Auth によって提供されるすべてのメソッドを直接使用できるようになります。 Auth::logout() メソッドを実行して、ログアウトするためのログアウト ルートを追加することもできます。以降の操作はLaravel独自の認証システムを使用する場合と同様に行えます。

上記で、Github アカウントを使用して Laravel アプリケーションにログインするすべての手順が完了しました。他のサードパーティ アプリケーションの実装も基本的に同様です。

参照: laravel.com 、mattstauffer.co

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート