Socialite Social Login


Einführung

Social Login aktualisieren
  • Installation
  • Konfiguration
  • Routing
  • Optionale Parameter
  • Zugriffsbereich
  • Kein Authentifizierungsstatus
  • Benutzerdetails abrufen
Einführung

Zusätzlich zur typischen formularbasierten Authentifizierung bietet Laravel Bietet außerdem eine einfache und bequeme Möglichkeit zur Authentifizierung bei OAuth-Anbietern mithilfe von Laravel Socialite

. Socialite unterstützt derzeit die Authentifizierung für Facebook, Twitter, LinkedIn, Google, GitHub, GitLab und Bitbucket.

Treiber für andere Plattformen finden Sie auf der Community-Treiber-Website

Socialite Providers

.

Social 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/socialite

Konfiguration

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üssel facebook, twitter, linkedin, google, github, gitlab oder bitbucket 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 Methode user 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 wie state zu übergeben oder response_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);
Dieser Artikel erschien zuerst am LearnKu.com Website.