国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Laravel 5.8 ??? ?? ??? / Socialite 社會化登錄

Socialite 社會化登錄

Socialite 社會化登錄


Laravel 社會化登錄

簡介

除了典型的基于表單的身份驗證之外,Laravel 還提供了一種使用 Laravel Socialite 對 OAuth providers 進行身份驗證的簡單方便的方法。 Socialite 目前支持 Facebook,Twitter,LinkedIn,Google,GitHub,GitLab 和 Bitbucket 的身份驗證。

其他平臺的驅(qū)動器可以在 Socialite Providers 社區(qū)驅(qū)動網(wǎng)站查找。

升級 社會化登錄

升級到 Socialite 的新主要版本時,請務必仔細查看 升級指南.

安裝

在開始使用社會化登錄功能之前,通過 Composer 將 laravel/socialite 包添加到你的項目依賴里面:

composer require laravel/socialite

配置

在使用 Socialite 之前,您還需要為應用程序使用的 OAuth 服務添加憑據(jù)。 這些憑證應該放在你的 config / services.php 配置文件中,并且應該使用密鑰 facebook,twitter,linkedingoogle,github,gitlabbitbucket, 取決于您的應用程序所需的提供商。 例如:

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

如果 redirect 項的值是個相對路徑,它會自動解析為全稱 URL 。

路由

接下來,就要對用戶認證了!這需要兩個路由:一個路由用于把用戶重定向到 OAuth 提供器,另一個則用于在認證完成后接收相應提供器的回調(diào)請求??梢酝ㄟ^ facade 方式 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 方法負責將用戶發(fā)送到 OAuth 提供程序,而 user 方法將讀取傳入請求并從提供程序檢索用戶的信息。

當然,還需要在你的控制器方法中定義好路由規(guī)則:

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

可選參數(shù)

許多 OAuth 提供程序支持重定向請求中的可選參數(shù)。 要在請求中包含任何可選參數(shù),請使用關聯(lián)數(shù)組調(diào)用 with 方法:

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

使用 with 方法時,注意不要傳遞任何保留的關鍵字,如 stateresponse_type 。

訪問作用域

在重定向用戶之前,您還可以使用 scopes 方法在請求中添加其他「作用域」。 此方法將所有現(xiàn)有范圍與您提供的范圍合并:

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

您可以使用 setScopes 方法覆蓋所有現(xiàn)有范圍:

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

無認證狀態(tài)

stateless 方法可用于禁用會話狀態(tài)驗證。 在向 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)

如果你已經(jīng)有了一個用戶的有效訪問令牌,你可以使用 userFromToken 方法檢索用戶的詳細信息。

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

從令牌和秘鑰中檢索用戶詳細信息 (OAuth1)

如果你已經(jīng)有了一個有效的用戶令牌 / 秘鑰,你可以使用 userFromTokenAndSecret 方法檢索他們的詳細信息:

$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
本文章首發(fā)在 LearnKu.com 網(wǎng)站上。