インターネット技術の継続的な発展に伴い、多くの製品は機能拡張を実現するためにサードパーティ API インターフェイスを呼び出す必要があります。その中でも、OAuth は広く使用されている標準認証フレームワークであり、その目的は、ユーザーが自分のユーザー名とパスワードを第三者に公開することなく、サードパーティのアプリケーションがそのリソースにアクセスすることを承認できるように、異なるアプリケーション間に認証メカニズムを提供することです。この記事では、PHP を使用して OAuth フレームワークを統合し、サードパーティ API アクセス承認を実装する方法を紹介します。
1. OAuth の基本概念
OAuth はオープン標準の承認フレームワークであり、その目的は、ユーザーがサードパーティ アプリケーションを承認できるように、異なるアプリケーション間に承認メカニズムを提供することです。ユーザー名とパスワードを第三者に公開することなく、リソースを保護します。
OAuth フレームワークには、認可サーバー、リソース サーバー、クライアントという 3 つの役割があります。このうち、認可サーバーはユーザーの認証と認可を担当し、リソースサーバーはリソースの保存と提供を担当し、クライアントはリソースにアクセスする必要があるアプリケーションです。
OAuth 認証プロセスには通常、次の手順が含まれます。
2. PHP と OAuth の統合
PHP は、OAuth 認証を簡単に実装できる多くのクラス ライブラリとフレームワークを提供します。以下では、oauth2-client を例として、PHP を使用して OAuth フレームワークを統合し、サードパーティ API アクセス承認を実装する方法を紹介します。
oauth2-client は、PHP で実装された OAuth2.0 クライアントで、OAuth2.0 認証サーバーからのアクセス トークンを要求するために使用できます。 。 oauth2-client のインストールは、composer を通じて実行できます。ターミナルで次のコマンドを実行して、oauth2-client をインストールします。
$ composer require league/oauth2-client
oauth2-client を使用する前に、クライアント オブジェクトを作成する必要があります。クライアント オブジェクトには次の構成情報が含まれています。
<?php $provider = new LeagueOAuth2ClientProviderGenericProvider([ 'clientId' => '...', 'clientSecret' => '...', 'redirectUri' => '...', 'urlAuthorize' => '...', 'urlAccessToken' => '...', 'urlResourceOwnerDetails' => '...' ]); ?>
ここでは、clientId、clientSecret、redirectUri が必須であり、他の URL リンクは実際の状況に応じて入力する必要があります。
次に、認証コードをリクエストする必要があります。 OAuth2.0 認可プロセスでは、クライアントは最初に認可コードを取得し、次にその認可コードを使用して認可サーバーにアクセス トークンを要求する必要があります。
<?php $authUrl = $provider->getAuthorizationUrl(); header('Location: '.$authUrl);
上記のコードでは、getAuthorizationUrl メソッドを通じて認可コード要求リンクを取得し、ヘッダー関数を使用してユーザーを認可リンクにリダイレクトし、ユーザーの認可を待ちます。
認可が成功すると、認可サーバーは認可コードを redirectUri 構成項目で指定されたアドレスにリダイレクトし、認可コードをフォームで渡される GET パラメータ。認可コードを介して認可サーバーにアクセス トークンをリクエストできます。
<?php $code = $_GET['code']; $token = $provider->getAccessToken('authorization_code', [ 'code' => $code ]); echo $token->getToken(); ?>
上記のコードでは、getAccessToken メソッドを使用してアクセス トークンをリクエストし、認可コードをパラメーターとして渡します。アクセス トークンの取得に成功したら、getToken メソッドを通じてアクセス トークンの値を取得できます。
アクセス トークンの有効期限が切れた場合は、トークンを更新して新しいアクセス トークンを取得する必要があります。 oauth2-client では、refreshToken メソッドを使用してトークンを更新できます。
<?php $refreshToken = $token->getRefreshToken(); $newToken = $provider->getAccessToken('refresh_token', [ 'refresh_token' => $refreshToken ]); echo $newToken->getToken(); ?>
上記のコードでは、getToken メソッドを通じて古いアクセス トークンを取得し、refreshToken メソッドを通じてそれを更新して新しいアクセス トークンを取得します。リフレッシュ トークンは、アクセス トークンが取得された場合にのみ返されることに注意することが重要です。
3. 概要
この記事では、PHP を使用して OAuth フレームワークを統合し、サードパーティ API アクセス承認を実現する方法を紹介します。このソリューションにより、ユーザーのユーザー名とパスワードを第三者に明かすことなく、第三者が提供する API に簡単にアクセスできます。自社の製品にサードパーティの API アクセス認証を実装する必要がある場合は、この記事で説明した内容を参照してください。
以上がPHP と OAuth の統合により、サードパーティ API アクセス認証が実装されますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。