Heim  >  Artikel  >  Backend-Entwicklung  >  Implementieren Sie die Anmeldung und Autorisierung von Drittanbietern mithilfe von PHP und OAuth2

Implementieren Sie die Anmeldung und Autorisierung von Drittanbietern mithilfe von PHP und OAuth2

PHPz
PHPzOriginal
2023-06-25 18:33:22984Durchsuche

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.

1. Zuerst müssen Sie eine OAuth-Anwendung auf GitHub erstellen

Erstellen Sie eine OAuth-Anwendung auf GitHub und notieren Sie die generierte Client-ID und das Client-Geheimnis für die spätere Verwendung.

2. Installieren Sie die OAuth2-Clientbibliothek

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

3. Erstellen Sie den Autorisierungslink.

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:

  1. Erstellt eine GitHub-Anbieterinstanz und stellt die erforderlichen OAuth-Anwendungsinformationen bereit.
  2. Verwenden der getAuthorizationUrl-Methode, um den Autorisierungslink und die Weiterleitung abzurufen der Benutzer zu diesem Link

4. Behandeln Sie die Rückruf-URL und erhalten Sie das Zugriffstoken

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();

5. Benutzerdaten abrufen und speichern

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.

6. Zusammenfassung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn