Mit der kontinuierlichen Weiterentwicklung und Popularisierung des Internets bieten immer mehr Websites und Anwendungen Anmelde- und Autorisierungsdienste von Drittanbietern an, um Benutzern eine schnelle Registrierung und Anmeldung zu erleichtern und Benutzerdaten bequemer zu erhalten. Als allgemeiner offener Autorisierungsstandard wird OAuth2 häufig in Anmelde- und Autorisierungsszenarien von Drittanbietern verwendet.
In diesem Artikel erfahren Sie, wie Sie mit PHP und OAuth2 die Anmeldung und Autorisierung von Drittanbietern implementieren. Wir werden GitHub als Beispielplattform verwenden, um zu demonstrieren, wie man mit OAuth2 Benutzerinformationen erhält und diese Informationen in einer lokalen Datenbank speichert.
Erstellen Sie eine OAuth-Anwendung auf GitHub und notieren Sie die generierte Client-ID und das Client-Geheimnis für die spätere Verwendung.
Um OAuth2 in PHP zu implementieren, können Sie eine OAuth2-Clientbibliothek eines Drittanbieters verwenden. Hier verwenden wir den phpleague/oauth2-client als Beispielbibliothek.
Verwenden Sie Composer zur Installation. Wenn Sie Composer noch nicht installiert haben, installieren Sie es bitte zuerst.
Führen Sie den folgenden Befehl im Terminal aus:
composer require league/oauth2-client
Mit dem Autorisierungslink kann der Benutzer zu GitHub weitergeleitet werden und eine Autorisierung anfordern.
Hier ist der Beispielcode zum Erstellen des Autorisierungslinks:
<?php require_once __DIR__ . '/vendor/autoload.php'; $provider = new LeagueOAuth2ClientProviderGithub([ 'clientId' => 'YOUR_CLIENT_ID', 'clientSecret' => 'YOUR_CLIENT_SECRET', 'redirectUri' => 'http://localhost:8000/callback.php', ]); $authUrl = $provider->getAuthorizationUrl([ 'scope' => ['user'], ]); header('Location: ' . $authUrl);
Dieser Code führt die folgenden Aufgaben aus:
Sobald der Benutzer Ihre App auf GitHub autorisiert hat, wird er zurück zu Ihrer App weitergeleitet. In dieser Weiterleitungs-URL können Sie das Zugriffstoken abrufen.
Hier ist der Beispielcode, um das Zugriffstoken zu erhalten:
<?php require_once __DIR__ . '/vendor/autoload.php'; $provider = new LeagueOAuth2ClientProviderGithub([ 'clientId' => 'YOUR_CLIENT_ID', 'clientSecret' => 'YOUR_CLIENT_SECRET', 'redirectUri' => 'http://localhost:8000/callback.php', ]); if (!isset($_GET['code'])) { die('授权失败:没有授权码!'); } else { $accessToken = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'], ]); } echo '访问令牌:' . $accessToken->getToken();
Da wir nun das Zugriffstoken erhalten haben, können wir das Zugriffstoken verwenden, um die Benutzerdaten abzurufen. Nehmen Sie als Beispiel das Erhalten von Benutzerinformationen:
$user = $provider->getResourceOwner($accessToken); echo '用户ID:' . $user->getId() . '<br>'; echo '用户名:' . $user->getNickname() . '<br>'; echo '头像URL:' . $user->getAvatarUrl() . '<br>'; echo '主页URL:' . $user->getProfileUrl() . '<br>';
Nachdem wir Benutzerdaten erhalten haben, können wir die Daten zur späteren Verwendung in einer lokalen Datenbank speichern.
In diesem Artikel haben wir vorgestellt, wie man PHP und OAuth2 verwendet, um die Anmeldung und Autorisierung von Drittanbietern zu implementieren. Anhand eines einfachen Beispiels haben wir gelernt, wie man mit der OAuth2-Clientbibliothek Autorisierungslinks erstellt, Zugriffstoken erhält und Benutzerdaten erhält. Ich hoffe, dieser Artikel ist hilfreich für Sie.
Das obige ist der detaillierte Inhalt vonImplementieren Sie die Anmeldung und Autorisierung von Drittanbietern mithilfe von PHP und OAuth2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!