ホームページ >バックエンド開発 >PHPチュートリアル >サードパーティのログインに PHP と OAuth を使用する方法

サードパーティのログインに PHP と OAuth を使用する方法

WBOY
WBOYオリジナル
2023-05-10 22:40:38845ブラウズ

インターネットの発展に伴い、ユーザーの認証と認可を必要とする Web サイトやアプリケーションがますます増えています。従来のユーザー名とパスワードによる認証は、ユーザーにとって煩雑で安全ではありませんでした。現時点では、サードパーティ ログインが認証方法としてますます一般的になってきています。この記事では、サードパーティのログインに PHP と OAuth を使用する方法を紹介します。

OAuth とは何ですか?

OAuth は認証のオープン標準であり、安全でオープンな認証方法を提供します。 OAuth を通じて、ユーザーはユーザー名とパスワードを明らかにすることなく、サードパーティのアプリケーションが独自のリソースを取得することを承認できます。

OAuth は、リソース所有者、クライアント、サービスプロバイダーの 3 つの役割で構成されます。リソース所有者はユーザーを指し、クライアントはサードパーティ アプリケーションを指し、サービス プロバイダーはリソースを提供する Web サイトまたはアプリケーションを指します。

OAuth 認証プロセスは通常、次のステップに分かれています。

  1. クライアントはサービス プロバイダーに認証を要求します。
  2. サービス プロバイダーはユーザーに承認を求めるプロンプトを表示し、ユーザーはサービス プロバイダーのページで承認を確認するか、承認を拒否します。
  3. ユーザーが認可に同意すると、サービスプロバイダーはクライアントにアクセストークンを発行します。
  4. クライアントはアクセス トークンを使用してサービス プロバイダーのリソースにアクセスします。

サードパーティ ログインに PHP と OAuth を使用するプロセス

以下では、GitHub を例として、サードパーティ ログインに PHP と OAuth を使用する方法を紹介します。

ステップ 1: GitHub OAuth アプリケーションを登録する

まず、GitHub OAuth アプリケーションを登録する必要があります。このアプリケーションは、GitHub に認可を要求するクライアントとして機能します。

GitHub に OAuth アプリケーションを登録する方法は次のとおりです。

  1. GitHub アカウントにログインします。
  2. [設定] ページに入り、[開発者設定] を選択します。
  3. [開発者設定] ページで、[OAuth アプリ] を選択します。
  4. [新しい OAuth アプリ] ボタンをクリックし、アプリケーション名、Web サイト URL、認可コールバック URL などのアプリケーション情報を入力します。認可コールバック URL は、クライアントが認可を取得した後にジャンプする必要があるページです。入力後、「アプリケーションを登録する」ボタンをクリックしてください。
  5. アプリケーションを登録すると、クライアント ID とクライアント シークレットが生成され、これら 2 つの値がクライアントで使用されます。

ステップ 2: クライアント コードを作成する

この例では、PHP の OAuth 拡張ライブラリを使用しています。使用する前に、拡張ライブラリがインストールされ有効になっていることを確認する必要があります。

クライアントは、GitHub に認可リクエストを送信し、認可コールバックの応答を処理する必要があります。クライアント コードは次のとおりです。

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

上記のコードでは、最初に OAuth ライブラリを導入し、GitHub OAuth アプリケーション情報を設定しました。次に、OAuth ライブラリを使用して OAuth リクエストを作成し、リクエスト トークンを SESSION に保存しました。最後に、GitHub の認証ページに移動します。

ユーザーが GitHub で認可すると、GitHub はアプリケーション情報に設定した認可コールバック URI にユーザーをリダイレクトし、URL に認可コードを含めます。この認可コードを認可コールバック ページで処理し、GitHub からアクセス トークンを申請する必要があります。認可コールバック ページのコードは次のとおりです。

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

認可コールバック ページでは、以前に SESSION に保存されたリクエスト トークンとコールバック URL から取得した認可コードを取得し、OAuth ライブラリを使用します。 OAuth リクエストを構築します。最後に、アクセストークンを使ってGitHubのユーザーAPIにアクセスし、ユーザーの情報を取得し、ユーザー情報を出力します。

概要

サードパーティのログインに PHP と OAuth を使用するプロセスは、次の手順に要約できます。

  1. サードパーティの OAuth アプリケーションを登録し、クライアント ID とクライアント シークレットを取得します。
  2. OAuth リクエストを作成し、サードパーティ アプリケーションから承認をリクエストし、リクエスト トークンを取得します。
  3. リクエストトークンをSESSIONに格納し、サードパーティアプリケーションの認可ページにジャンプします。
  4. ユーザーがサードパーティ アプリケーションを認可すると、認可コードを含む認可コールバック URI にリダイレクトされます。
  5. 認可コールバック ページで、認可コードを使用してサードパーティ アプリケーションからのアクセス トークンを申請し、そのアクセス トークンを使用してサードパーティのリソースにアクセスします。

PHP と OAuth を使用してサードパーティ ログインを実装すると、ユーザーの認証と認可のプロセスが大幅に簡素化され、セキュリティとユーザー エクスペリエンスが向上します。 OAuth 認証と PHP プログラミングに興味がある場合は、OAuth と PHP を使用してさらに興味深い機能を実現してみることができます。

以上がサードパーティのログインに PHP と OAuth を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。