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:
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:
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']);
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'];
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:
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!