Socialite Social Login
- Installation
- Konfiguration
- Routing
- Optionale Parameter
- Zugriffsbereich
- Kein Authentifizierungsstatus
- Benutzerdetails abrufen
Treiber für andere Plattformen finden Sie auf der Community-Treiber-Website
Socialite ProvidersSocial Login aktualisieren
Lesen Sie es sorgfältig durch, wenn Sie auf eine neue Hauptversion von Socialite aktualisieren Upgrade-Anleitung.
Installation
Bevor Sie mit der Verwendung der Social-Login-Funktion beginnen, gehen Sie durch Composer wird Laravel/Socialite Fügen Sie das Paket zu Ihren Projektabhängigkeiten hinzu:
composer require laravel/socialiteKonfiguration
Bevor Sie Socialite verwenden, müssen Sie auch die Anwendung verwenden verwendet den OAuth-Dienst zum Hinzufügen von Anmeldeinformationen. Diese Anmeldeinformationen sollten in Ihrer
config / services.php
-Konfigurationsdatei abgelegt werden und die Schlüsselgithub
,gitlab
oderbitbucket
verwenden, je nachdem, welchen Anbieter Sie benötigen durch die Anwendung. Beispiel:'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => 'http://your-callback-url', ],Wenn der Wert des Elements
redirect
ein relativer Pfad ist, wird er automatisch in die vollständig qualifizierte URL aufgelöst.Routing
Als nächstes ist es an der Zeit, den Benutzer zu authentifizieren! Dies erfordert zwei Routen: eine, um den Benutzer zum OAuth-Anbieter umzuleiten, und eine andere, um die Rückrufanforderung vom Anbieter zu empfangen, nachdem die Authentifizierung abgeschlossen ist. Auf Socialite kann über die Fassadenmethode
Socialite::
zugegriffen werden: Die Methode<?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
ist dafür verantwortlich, den Benutzer an den OAuth-Anbieter zu senden, während die Methodeuser
die eingehende Anfrage liest und die des Benutzers abruft Informationen des Anbieters.Natürlich müssen Sie auch Routing-Regeln in Ihrer Controller-Methode definieren:
Route::get('login/github', 'Auth\LoginController@redirectToProvider'); Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');Optionale Parameter
Viele OAuth-Anbieter unterstützen optionale Parameter in Umleitungsanfragen. Um optionale Parameter in die Anfrage aufzunehmen, rufen Sie die Methode
with
mit einem assoziativen Array auf:return Socialite::driver('google') ->with(['hd' => 'example.com']) ->redirect();Achten Sie bei Verwendung der Methode
with
darauf, keine reservierten Schlüsselwörter wiestate
zu übergeben oderresponse_type
.Zugriffsbereich
Bevor Sie den Benutzer umleiten, können Sie auch die
scopes
-Methode Hinzufügen verwenden zusätzliche „Umfänge“ zur Anfrage. Diese Methode führt alle vorhandenen Bereiche mit dem von Ihnen angegebenen zusammen:return Socialite::driver('github') ->scopes(['read:user', 'public_repo']) ->redirect();Sie können die Methode
setScopes
verwenden, um alle vorhandenen Bereiche zu überschreiben:return Socialite::driver('github') ->setScopes(['read:user', 'public_repo']) ->redirect();Kein Zertifizierungsstatus
stateless
Die Methode kann verwendet werden, um die Überprüfung des Sitzungsstatus zu deaktivieren. Dies ist nützlich, wenn Sie Ihrer API eine soziale Authentifizierung hinzufügen:return Socialite::driver('google')->stateless()->user();Benutzerinstanz abrufen
Sobald Sie die Benutzerinstanz haben, können Sie weitere Benutzerdetails abrufen:
$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();Benutzerdetails vom Token abrufen (OAuth2)
Wenn Sie bereits über ein gültiges Zugriffstoken für einen Benutzer verfügen, können Sie die Details des Benutzers mit der Methode
userFromToken
abrufen.$user = Socialite::driver('github')->userFromToken($token);Benutzerdetails von Token und Schlüssel abrufen (OAuth1)
Wenn Sie bereits über ein gültiges Benutzer-Token/-Schlüssel verfügen, können Sie deren Details mit
userFromTokenAndSecret
abrufen Methode:$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);