Heim > Artikel > Backend-Entwicklung > Wie verwende ich die Autorisierung eines Drittanbieters, um mich in PHP anzumelden?
Im heutigen sozialen Zeitalter geben sich Benutzer nicht mehr mit den herkömmlichen Registrierungs- und Anmeldemethoden zufrieden und hoffen, sich direkt mit ihren bereits registrierten sozialen Konten anmelden zu können. Um dieser Nachfrage gerecht zu werden, bieten viele Websites den Login-Zugang von Drittanbietern an. In PHP können wir die autorisierte Anmeldung durch Dritte über das OAuth-Protokoll implementieren. Schauen wir uns das gemeinsam an.
Das OAuth-Protokoll ist ein offener Standard, der hauptsächlich dazu verwendet wird, den Zugriff auf Plattformen von Drittanbietern zu autorisieren, ohne die Kontonummer und das Passwort des Benutzers anzugeben. Über das OAuth-Protokoll können Drittplattformen im Namen von Benutzern Daten von anderen Plattformen anfordern und so den Datenaustausch zwischen verschiedenen Plattformen realisieren.
In PHP gibt es im Allgemeinen die folgenden Schritte, um die OAuth-Autorisierungsanmeldung zu implementieren:
App-Geheimnis: Der geheime Schlüssel der Anwendung
Umleitungs-URI: Für Rückrufe verwendeter URI, erforderlich. Konsistent mit dem, was während der Anwendung ausgefüllt wurde -Party-OAuth-Client zur schnellen Implementierung der Autorisierungs-Anmeldefunktion. Hier nehmen wir Github als Beispiel, um die Verwendung eines OAuth-Clients eines Drittanbieters vorzustellen. Hier verwenden wir den OAuth2-Client von PHP League, um die autorisierte Github-Anmeldung zu implementieren.
composer require league/oauth2-client
$provider = new LeagueOAuth2ClientProviderGithub([ 'clientId' => 'CLIENT_ID', 'clientSecret' => 'CLIENT_SECRET', 'redirectUri' => 'REDIRECT_URI', 'scopes' => ['user'], ]);
Autorisierungscode abrufen
Bevor Sie die OAuth-Autorisierungsanmeldung durchführen, müssen Sie eine Anfrage an die Drittanbieterplattform senden, um den Autorisierungscode zu erhalten . Am Beispiel von Github können wir den folgenden Code verwenden, um Benutzer zur Github-Authentifizierungsseite umzuleiten:// Step 1. Get authorization code $options = [ 'state' => 'OPTIONAL_CUSTOM_CONFIGURED_STATE', // ... ]; $authUrl = $provider->getAuthorizationUrl($options); // Store state so that the callback can verify the response $_SESSION['oauth2state'] = $provider->getState(); // Redirect the user to the authorization URL header('Location: '.$authUrl); exit;Beim Anfordern der Github-Authentifizierungsseite übergeben wir ein $options-Array, um den Umfang der Autorisierung anzugeben. usw. Informationen. $_SESSION['oauth2state'] wird zum Speichern des zurückgegebenen Statuswerts verwendet.
// Step 2. Get an access token using the authorization code grant if (isset($_GET['code']) && isset($_GET['state'])) { if ($_GET['state'] !== $_SESSION['oauth2state']) { unset($_SESSION['oauth2state']); exit('State error'); } // Get an access token using the authorization code grant try { $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // Optional: Store the token $_SESSION['access_token'] = $token->getToken(); } catch (LeagueOAuth2ClientProviderExceptionIdentityProviderException $e) { exit('Token error: '.$e->getMessage()); } header('Location: '.$_SERVER['PHP_SELF']); exit; }Nachdem wir das Zugriffstoken erhalten haben, können wir das Token zur späteren Verwendung in SESSION speichern.
if (isset($_SESSION['access_token'])) { $token = new LeagueOAuth2ClientTokenAccessToken(['access_token' => $_SESSION['access_token']]); try { $user = $provider->getResourceOwner($token); echo 'Hello '.$user->getName(); } catch (LeagueOAuth2ClientProviderExceptionIdentityProviderException $e) { exit('Resource owner error: '.$e->getMessage()); } }Nachdem wir die Benutzerinformationen erhalten haben, können wir sie je nach Bedarf verarbeiten, z. B. Registrierung, Anmeldung, Personalisierung usw.
Das obige ist der detaillierte Inhalt vonWie verwende ich die Autorisierung eines Drittanbieters, um mich in PHP anzumelden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!