Connexion sociale socialite
Connexion sociale Laravel
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é
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
配置文件中,并且应该使用密钥 facebook
,twitter
,linkedin
,google
,github
,gitlab
或 bitbucket
, 取决于您的应用程序所需的提供商。 例如:
'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
方法时,注意不要传递任何保留的关键字,如state
或response_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.
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 :
rrreeeRé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)
如果你已经有了一个有效的用户令牌 / 秘钥,你可以使用 userFromTokenAndSecret
rrreee
Cet article est apparu pour la première fois sur le site Web 🎜LearnKu.com🎜. 🎜🎜 rrreee