So verwenden Sie PHP und OAuth für die Anmeldung bei Drittanbietern

WBOY
Freigeben: 2023-05-10 22:42:02
Original
835 Leute haben es durchsucht

Mit der Entwicklung des Internets erfordern immer mehr Websites und Anwendungen eine Benutzerauthentifizierung und -autorisierung. Die herkömmliche Authentifizierung mit Benutzername und Passwort ist für Benutzer umständlich und unsicher geworden. Derzeit ist die Anmeldung über Dritte zu einer immer beliebter werdenden Authentifizierungsmethode geworden. In diesem Artikel wird erläutert, wie Sie PHP und OAuth für die Anmeldung bei Drittanbietern verwenden.

Was ist OAuth?

OAuth ist ein offener Standard für die Autorisierung und bietet eine sichere und offene Autorisierungsmethode. Über OAuth können Benutzer Anwendungen von Drittanbietern autorisieren, ihre eigenen Ressourcen abzurufen, ohne ihren Benutzernamen und ihr Passwort preiszugeben.

OAuth besteht aus drei Rollen: Ressourcenbesitzer, Kunde und Dienstanbieter. Der Ressourcenbesitzer bezieht sich auf den Benutzer, der Client bezieht sich auf die Drittanbieteranwendung und der Dienstanbieter bezieht sich auf die Website oder Anwendung, die die Ressource bereitstellt.

Der Autorisierungsprozess von OAuth gliedert sich im Allgemeinen in die folgenden Schritte:

  1. Der Client fordert die Autorisierung vom Dienstanbieter an.
  2. Der Dienstanbieter fordert den Benutzer zur Autorisierung auf und der Benutzer bestätigt die Autorisierung oder lehnt die Autorisierung auf der Seite des Dienstanbieters ab.
  3. Wenn der Benutzer der Autorisierung zustimmt, stellt der Dienstanbieter dem Client ein Zugriffstoken aus.
  4. Der Client nutzt das Zugriffstoken, um auf die Ressourcen des Dienstanbieters zuzugreifen.

Prozess der Verwendung von PHP und OAuth für die Anmeldung bei Drittanbietern

Im Folgenden verwenden wir GitHub als Beispiel, um vorzustellen, wie PHP und OAuth für die Anmeldung bei Drittanbietern verwendet werden.

Schritt 1: GitHub OAuth-Anwendung registrieren

Zuerst müssen wir eine GitHub OAuth-Anwendung registrieren. Diese Anwendung fungiert als unser Client, um die Autorisierung von GitHub anzufordern.

So registrieren Sie eine OAuth-Anwendung auf GitHub:

  1. Melden Sie sich bei Ihrem GitHub-Konto an.
  2. Öffnen Sie die Seite „Einstellungen“ und wählen Sie „Entwicklereinstellungen“.
  3. Wählen Sie auf der Seite „Entwicklereinstellungen“ die Option „OAuth-Apps“ aus.
  4. Klicken Sie auf die Schaltfläche „Neue OAuth-App“ und geben Sie die Anwendungsinformationen ein, einschließlich Anwendungsname, Website-URL, Autorisierungs-Callback-URL usw. Die Autorisierungs-Callback-URL ist die Seite, zu der der Client nach Erhalt der Autorisierung springen muss. Klicken Sie nach dem Ausfüllen auf die Schaltfläche „Antrag registrieren“.
  5. Nach der Registrierung der Anwendung werden eine Client-ID und ein Client-Geheimnis generiert und diese beiden Werte werden im Client verwendet.

Schritt 2: Client-Code schreiben

In diesem Beispiel verwenden wir die OAuth-Erweiterungsbibliothek in PHP. Sie müssen vor der Verwendung sicherstellen, dass die Erweiterungsbibliothek installiert und aktiviert wurde.

Der Client muss eine Autorisierungsanfrage an GitHub senden und die Antwort des Autorisierungsrückrufs verarbeiten. Der Client-Code lautet wie folgt:

// 引入OAuth库
require_once('OAuth.php');

// GitHub OAuth应用信息
$client_id = 'your_client_id';
$client_secret = 'your_client_secret';
$redirect_uri = 'http://example.com/redirect_uri';

// 授权请求URL
$url = 'https://github.com/login/oauth/authorize';
$params = array('client_id' => $client_id, 'redirect_uri' => $redirect_uri);

// 构造OAuth请求
$oauth = new OAuth($client_id, $client_secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
$request_token = $oauth->getRequestToken($url, $params);

// 将请求令牌存储在SESSION中
$_SESSION['request_token'] = $request_token;

// 跳转到GitHub授权页面
header('Location: ' . $url . '?oauth_token=' . $request_token['oauth_token']);
Nach dem Login kopieren

Im obigen Code haben wir zuerst die OAuth-Bibliothek eingeführt und die GitHub-OAuth-Anwendungsinformationen festgelegt. Anschließend haben wir mithilfe der OAuth-Bibliothek eine OAuth-Anfrage erstellt und das Anforderungstoken in der SESSION gespeichert. Schließlich springen wir zur Autorisierungsseite von GitHub.

Wenn sich der Benutzer auf GitHub autorisiert, leitet GitHub den Benutzer zum Autorisierungs-Callback-URI weiter, den wir in den Anwendungsinformationen festgelegt haben, und fügt den Autorisierungscode in die URL ein. Wir müssen diesen Autorisierungscode auf der Autorisierungsrückrufseite verarbeiten und ein Zugriffstoken von GitHub beantragen. Das Folgende ist der Code der Autorisierungsrückrufseite:

// 引入OAuth库
require_once('OAuth.php');

// GitHub OAuth应用信息
$client_id = 'your_client_id';
$client_secret = 'your_client_secret';
$redirect_uri = 'http://example.com/redirect_uri';

// 获取访问令牌
$request_token = $_SESSION['request_token'];
$oauth_verifier = $_GET['oauth_verifier'];

// 构造OAuth请求
$oauth = new OAuth($client_id, $client_secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
$oauth->setToken($request_token['oauth_token'], $request_token['oauth_token_secret']);
$access_token = $oauth->getAccessToken('https://github.com/login/oauth/access_token', null, $oauth_verifier);

// 使用访问令牌访问GitHub资源
$oauth->setToken($access_token['oauth_token'], $access_token['oauth_token_secret']);
$response = $oauth->fetch('https://api.github.com/user');
$user_info = json_decode($response, true);

// 输出用户信息
echo 'GitHub登录成功!<br>';
echo 'GitHub邮箱:' . $user_info['email'] . '<br>';
echo 'GitHub昵称:' . $user_info['login'];
Nach dem Login kopieren

Auf der Autorisierungsrückrufseite erhalten wir das zuvor in der SESSION gespeicherte Anforderungstoken und den von der Rückruf-URL erhaltenen Autorisierungscode und verwenden dann die OAuth-Bibliothek, um ein OAuth zu erstellen Anfrage. Schließlich verwenden wir das Zugriffstoken, um auf die Benutzer-API von GitHub zuzugreifen, die Benutzerinformationen abzurufen und die Benutzerinformationen auszugeben.

Zusammenfassung

Der Prozess der Drittanbieter-Anmeldung mit PHP und OAuth kann in den folgenden Schritten zusammengefasst werden:

  1. Registrieren Sie eine Drittanbieter-OAuth-Anwendung und erhalten Sie die Client-ID und das Client-Geheimnis.
  2. Erstellen Sie eine OAuth-Anfrage, fordern Sie die Autorisierung von der Drittanbieteranwendung an und erhalten Sie das Anforderungstoken.
  3. Speichern Sie das Anforderungstoken in SESSION und springen Sie zur Autorisierungsseite der Drittanbieteranwendung.
  4. Nachdem der Benutzer die Drittanbieteranwendung autorisiert hat, wird er mit dem Autorisierungscode zum Autorisierungsrückruf-URI weitergeleitet.
  5. Verwenden Sie auf der Autorisierungsrückrufseite den Autorisierungscode, um ein Zugriffstoken von der Drittanbieteranwendung zu beantragen, und verwenden Sie dann das Zugriffstoken, um auf Ressourcen von Drittanbietern zuzugreifen.

Die Verwendung von PHP und OAuth zur Implementierung der Anmeldung von Drittanbietern kann den Benutzerauthentifizierungs- und Autorisierungsprozess erheblich vereinfachen und die Sicherheit und Benutzererfahrung verbessern. Wenn Sie sich für OAuth-Authentifizierung und PHP-Programmierung interessieren, können Sie versuchen, mit OAuth und PHP weitere interessante Funktionen zu erreichen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP und OAuth für die Anmeldung bei Drittanbietern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage