Home Backend Development PHP Tutorial How to use PHP and OAuth for third-party login

How to use PHP and OAuth for third-party login

May 10, 2023 pm 10:40 PM
php oauth Sign in with

With the development of the Internet, more and more websites and applications require user authentication and authorization. Traditional username and password authentication has become cumbersome and insecure for users. At this time, third-party login has become an increasingly popular authentication method. This article will introduce how to use PHP and OAuth for third-party login.

What is OAuth?

OAuth is an open standard for authorization, providing a secure and open authorization method. Through OAuth, users can authorize third-party applications to obtain their own resources without revealing their username and password.

OAuth consists of three roles: resource owner, client and service provider. The resource owner refers to the user, the client refers to the third-party application, and the service provider refers to the website or application that provides the resource.

The OAuth authorization process is generally divided into the following steps:

  1. The client requests authorization from the service provider.
  2. The service provider prompts the user for authorization, and the user confirms authorization or refuses authorization on the service provider's page.
  3. If the user agrees to the authorization, the service provider will issue an access token to the client.
  4. The client uses the access token to access the service provider's resources.

The process of using PHP and OAuth for third-party login

Below, we will use GitHub as an example to introduce how to use PHP and OAuth for third-party login.

Step 1: Register GitHub OAuth application

First, we need to register a GitHub OAuth application. This application will act as our client to request authorization from GitHub.

The method to register an OAuth application on GitHub is as follows:

  1. Log in to your GitHub account.
  2. Enter the Settings page and select Developer settings.
  3. On the Developer settings page, select OAuth Apps.
  4. Click the "New OAuth App" button and fill in the application information, including application name, website URL, authorization callback URL, etc. The authorization callback URL is the page that the client needs to jump to after obtaining authorization. After filling in, click the "Register application" button.
  5. After registering the application, a Client ID and Client Secret will be generated, and these two values ​​will be used in the client.

Step 2: Write client code

In this example, we are using the OAuth extension library in PHP. You need to ensure that the extension library has been installed and enabled before use.

The client needs to submit an authorization request to GitHub and process the response of the authorization callback. The client code is as follows:

// 引入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']);
Copy after login

In the above code, we first introduced the OAuth library and set the GitHub OAuth application information. We then constructed an OAuth request using the OAuth library and stored the request token in the SESSION. Finally, we jump to GitHub’s authorization page.

When the user authorizes on GitHub, GitHub will redirect the user to the authorization callback URI we set in the application information, and include the authorization code in the URL. We need to process this authorization code in the authorization callback page and apply for an access token from GitHub. The following is the code for the authorization callback page:

// 引入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'];
Copy after login

In the authorization callback page, we obtain the request token previously stored in the SESSION and the authorization code obtained from the callback URL, and then use the OAuth library to construct An OAuth request. Finally, we use the access token to access GitHub's user API, obtain the user's information, and output the user information.

Summary

The process of using PHP and OAuth for third-party login can be summarized into the following steps:

  1. Register the third-party OAuth application and obtain the Client ID and Client Secret.
  2. Construct an OAuth request, request authorization from the third-party application, and obtain the request token.
  3. Store the request token in SESSION and jump to the authorization page of the third-party application.
  4. After the user authorizes the third-party application, he will be redirected to the authorization callback URI with the authorization code.
  5. In the authorization callback page, use the authorization code to apply for an access token from the third-party application, and then use the access token to access third-party resources.

Using PHP and OAuth to implement third-party login can greatly simplify the user authentication and authorization process, and improve security and user experience. If you are interested in OAuth authentication and PHP programming, you can try to use OAuth and PHP to achieve more interesting functions.

The above is the detailed content of How to use PHP and OAuth for third-party login. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles