社交界のソーシャルログイン


インストール

  • 構成
  • ルーティング
  • オプションのパラメータ
  • アクセス範囲
  • 認証ステータスなし
  • ユーザー詳細の取得
  • はじめに
  • Laravel は、一般的なフォームベースの認証に加えて、Laravel Socialite という便利な方法を使用して OAuth プロバイダーに認証する簡単な方法も提供します。 Socialite は現在、Facebook、Twitter、LinkedIn、Google、GitHub、GitLab、Bitbucket の認証をサポートしています。

他のプラットフォーム用のドライバーは、Socialite Providers コミュニティ ドライバー Web サイトで見つけることができます。

#

Socialite ログインのアップグレード

Socialite の新しいメジャー バージョンにアップグレードする場合は、アップグレード ガイドを必ずよく読んでください。

##インストール

ソーシャル ログイン機能の使用を開始する前に、Composer を通じて laravel/socialite パッケージをプロジェクトの依存関係に追加します:

composer require laravel/socialite

構成

Socialite を使用する前に、アプリケーションで使用される OAuth サービスの資格情報を追加する必要もあります。これらの資格情報は、config/services.php 構成ファイルに配置し、キー facebooktwitterlinkedin とともに使用する必要があります。 、googlegithubgitlab、または bitbucket (アプリケーションに必要なプロバイダーに応じて)。例:

'github' => [ 
   'client_id' => env('GITHUB_CLIENT_ID'),    
   'client_secret' => env('GITHUB_CLIENT_SECRET'),    
   'redirect' => 'http://your-callback-url',
  ],

redirect 項目の値が相対パスの場合、完全な URL に自動的に解決されます。

ルーティング

次に、ユーザーを認証します。これには 2 つのルートが必要です。1 つはユーザーを OAuth プロバイダーにリダイレクトするルート、もう 1 つは認証の完了後に対応するプロバイダーからコールバック リクエストを受信するルートです。 Socialite には、ファサード メソッド Socialite:: を介してアクセスできます。

<?php
    namespace App\Http\Controllers\Auth;use Socialite;
    class LoginController extends Controller{   
     /**
     * Redirect the user to the GitHub authentication page.
     *
     * @return \Illuminate\Http\Response
     */    
     public function redirectToProvider()   
      {     
         return Socialite::driver('github')->redirect();  
       }   
    /**
     * Obtain the user information from GitHub.
     *
     * @return \Illuminate\Http\Response
     */    
    public function handleProviderCallback()  
      {      
        $user = Socialite::driver('github')->user();        
        // $user->token;    
      }
    }

redirect メソッドは、ユーザーを OAuth プロバイダーに送信する役割を果たし、 user メソッド 受信リクエストを読み取り、プロバイダーからユーザーの情報を取得します。

もちろん、コントローラー メソッドでルーティング ルールを定義する必要もあります:

Route::get('login/github', 'Auth\LoginController@redirectToProvider');
Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');

オプションのパラメーター

多くの OAuth プロバイダーは、リダイレクト リクエストのオプションのパラメーターをサポートしています。リクエストにオプションのパラメーターを含めるには、連想配列を使用して with メソッドを呼び出します。

return Socialite::driver('google') 
   ->with(['hd' => 'example.com'])    
   ->redirect();

with メソッドを使用するときは、次のことを行わないように注意してください。 pass any は、stateresponse_type などのキーワードを保持します。

アクセス スコープ

ユーザーをリダイレクトする前に、スコープ ## を使用することもできます。 # リクエストに他の「スコープ」を追加するメソッド。このメソッドは、すべての既存のスコープを、指定したスコープとマージします:

return Socialite::driver('github') 
   ->scopes(['read:user', 'public_repo'])    
   ->redirect();

setScopes メソッドを使用して、すべての既存のスコープを上書きできます:

return Socialite::driver('github') 
   ->setScopes(['read:user', 'public_repo'])    
   ->redirect();

#認証フリー状態

ステートレス

メソッドを使用して、セッション状態の検証を無効にすることができます。これは、API にソーシャル認証を追加するときに役立ちます:

return Socialite::driver('google')->stateless()->user();

ユーザー インスタンスの取得

ユーザー インスタンスを取得したら、さらにユーザーの詳細を取得できます:

$user = Socialite::driver('github')->user();
// OAuth2 Providers
$token = $user->token;
$refreshToken = $user->refreshToken; 
// not always provided
$expiresIn = $user->expiresIn;
// OAuth1 Providers
$token = $user->token;
$tokenSecret = $user->tokenSecret;
// 获取所有 Providers
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

トークンからユーザーの詳細を取得します (OAuth2)

ユーザーの有効なアクセス トークンをすでに持っている場合は、userFromToken メソッドを使用してユーザーの詳細を取得できます。

$user = Socialite::driver('github')->userFromToken($token);

トークンとキーからユーザーの詳細を取得する (OAuth1)

有効なユーザー トークン/キーをすでに持っている場合は、 を使用して詳細を取得できます。 userFromTokenAndSecret メソッド:

$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
この記事は、LearnKu.com Web サイトに初めて掲載されました。