Connexion sociale socialite


Connexion sociale Laravel
Installation

Configuration
  • Routage
  • Paramètres facultatifs
  • Portée d'accès
  • Aucun statut d'authentification
  • Récupérer les détails de l'utilisateur
  • IntroductionEn plus de l'authentification typique basée sur un formulaire en dehors de Laravel Fournit également un moyen simple et pratique de s'authentifier auprès des fournisseurs OAuth à l'aide de
  • Laravel Socialite
  • . Socialite prend actuellement en charge l'authentification pour Facebook, Twitter, LinkedIn, Google, GitHub, GitLab et Bitbucket.
  • Les pilotes pour d'autres plates-formes peuvent être trouvés sur le site Web de la communauté
Socialite Providers

.

Mise à niveau de la connexion sociale

Lors de la mise à niveau vers une nouvelle version majeure de Socialite, assurez-vous de lire attentivement le Guide de mise à niveau.

Installation

Avant de commencer à utiliser la fonctionnalité de connexion sociale, installez laravel/ Ajoutez le package socialite aux dépendances de votre projet :

composer require laravel/socialite

Configuration

Avant d'utiliser Socialite, vous devez également ajouter des informations d'identification pour le service OAuth utilisé par l'application. Ces identifiants doivent être placés dans votre fichier de configuration config/services.php et doivent être utilisés avec les clés facebook, twitter, linkedin , google, github, gitlab ou bitbucket, selon le fournisseur dont votre application a besoin. Par exemple : config / services.php 配置文件中,并且应该使用密钥 facebooktwitterlinkedingooglegithubgitlabbitbucket, 取决于您的应用程序所需的提供商。 例如:

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

如果 redirect 项的值是个相对路径,它会自动解析为全称 URL 。

路由

接下来,就要对用户认证了!这需要两个路由:一个路由用于把用户重定向到 OAuth 提供器,另一个则用于在认证完成后接收相应提供器的回调请求。可以通过 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 方法负责将用户发送到 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 方法时,注意不要传递任何保留的关键字,如 stateresponse_type

访问作用域

在重定向用户之前,您还可以使用 scopes 方法在请求中添加其他「作用域」。 此方法将所有现有范围与您提供的范围合并:

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

您可以使用 setScopes 方法覆盖所有现有范围:

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

无认证状态

stateless

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

Si la valeur de l'élément redirect est un chemin relatif, il sera automatiquement résolu en URL complète.

routing🎜🎜Ensuite, il est temps d'authentifier l'utilisateur ! Cela nécessite deux routes : une pour rediriger l'utilisateur vers le fournisseur OAuth et une autre pour recevoir la demande de rappel du fournisseur une fois l'authentification terminée. Socialite est accessible via la méthode de façade Socialite:: : 🎜
$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();
🎜 La méthode redirect est chargée d'envoyer l'utilisateur vers le fournisseur OAuth, tandis que le user< La méthode /code> lit les demandes entrantes et récupère les informations de l'utilisateur auprès du fournisseur. 🎜🎜Bien sûr, vous devez également définir des règles de routage dans votre méthode de contrôleur : 🎜
$user = Socialite::driver('github')->userFromToken($token);
🎜🎜🎜
🎜🎜 Facultatif Paramètres 🎜🎜De nombreux fournisseurs OAuth prennent en charge des paramètres facultatifs dans les requêtes de redirection. Pour inclure des paramètres facultatifs dans la requête, appelez la méthode with avec un tableau associatif : 🎜
$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
🎜Lorsque vous utilisez la méthode with, veillez à ne transmettre aucun paramètre clés réservées Mots, tels que state ou response_type. 🎜
🎜
🎜🎜
🎜🎜Access scopes🎜🎜Avant de rediriger l'utilisateur, vous pouvez également utiliser Le < La méthode code>scopes ajoute des "portées" supplémentaires à la requête. Cette méthode fusionne toutes les étendues existantes avec les étendues que vous fournissez : 🎜rrreee🎜 Vous pouvez utiliser la méthode setScopes pour remplacer toutes les étendues existantes : 🎜rrreee🎜🎜🎜 < div name="8d0b2d" data-unique="8d0b2d">🎜🎜Aucun état d'authentification🎜🎜La méthode stateless peut être utilisée pour désactiver la validation de l'état de session. Ceci est très utile lors de l'ajout d'une authentification sociale à votre API : 🎜rrreee🎜🎜🎜🎜🎜🎜

Obtenir une instance utilisateur

Une fois que vous avez une instance utilisateur, vous pouvez obtenir plus de détails utilisateur :

rrreee

Récupérer les détails utilisateur à partir du jeton (OAuth2)

Si vous disposez déjà d'un jeton d'accès valide pour un utilisateur, vous pouvez récupérer les détails de l'utilisateur à l'aide de la méthode userFromToken. userFromToken 方法检索用户的详细信息。

rrreee

从令牌和秘钥中检索用户详细信息 (OAuth1)

如果你已经有了一个有效的用户令牌 / 秘钥,你可以使用 userFromTokenAndSecretrrreee

Récupérer les détails de l'utilisateur à partir du jeton et de la clé (OAuth1)Si vous disposez déjà d'un jeton/clé d'utilisateur valide, vous pouvez récupérer leurs détails en utilisant le < méthode code>userFromTokenAndSecret :
rrreee
Cet article est apparu pour la première fois sur le site Web 🎜LearnKu.com🎜. 🎜🎜