ホームページ  >  記事  >  バックエンド開発  >  php oauth v1.0 クライアントとサーバーのプロセスと実装の詳細な説明_PHP チュートリアル

php oauth v1.0 クライアントとサーバーのプロセスと実装の詳細な説明_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:37:211121ブラウズ

php oauthクライアントとサーバーのプロセスと実装

紹介:

1. 主にサードパーティがユーザーリソースを取得するために使用され、通常はユーザー情報を取得するためのサードパーティのログイン認証に使用されます。

2. RFC-5849 プロトコルです (ソフトウェアやサービスではありません)

3. 認証 + 認可


フローチャート:

各プラットフォームのフローチャート163happy.com新浪微博

クライアントとサーバーの実装:

1. フローチャートから、次の手順が必要であることがわかります。
0. ユーザーの Key と Secret を取得します (フローチャートの外) [server/create_consumer.php]
1. リクエストトークンとリクエストシークレットを取得する [client/get_request_token.php] 2. リクエスト トークンとリクエスト シークレットを返す [server/request_token.php] 3. 認証ページをリダイレクトします——" 【server/authorize.php】 4. ユーザー認証コールバック ——| 5. アクセストークンとアクセスシークレットを取得する [client/get_access_token.php] 6. アクセス トークンとアクセス シークレットを返す [server/access_token.php] 7. APIの呼び出し(フローチャート外) [client/get_api.php] 8. APIで取得したデータを返却(フローチャート外) [server/api.php]

コードのディレクトリ構造


2. コードの実装プロセス

0:server/create_consumer.phpクライアントはコンシューマキーとコンシューマシークレットを生成します

リーリー

OAuthProvider: OAuthプロバイダークラス


generateToken: ランダムなトークンを生成します

generateToken 関数には パフォーマンスに注意してください 2 番目のパラメーター dev/random と dev/urandom のパフォーマンスの違いに注意してください。ここでは詳細な説明はありません。ご自身のプロジェクトに合わせて調整してください。

具体的なパフォーマンス情報については、/dev/random を参照してください。Mcrypt の応答が遅い理由の 1 つ


sha1: HMAC-SHA1 アルゴリズムを使用して署名を生成します

Baidu: OAuth リクエストでは、HMAC-SHA1 または MD5 アルゴリズムを使用して署名を生成できます。


Sina Weibo: すべての OAuth リクエストは HMAC-SHA1 アルゴリズムを使用して署名を生成します


Kaixin.com: 署名メソッド、現在は HMAC-SHA1 のみをサポートしています


実行結果


1: client/get_request_token.php はリクエスト トークンとリクエスト シークレットを取得します

れーれー


上記のコードを渡します

getRequestToken($request_url . '?callback_url=' . $callback_url . '&scope=all') はサーバーコードを実行します

2:server/request_token.php request_token を返す

リーリー


コード 1 in 2 を通じて $oauth_token、$oauth_token_secret、および oauth_callback_confirmed を取得します

3にリダイレクト

3:server/authorize.php

認証の検証 これにより、ユーザーはコールバックする前にアカウントとパスワードを入力する必要があります。コードの最も基本的な実装では、ユーザー間のデフォルトの認証を省略しました

れーれー

ここでの検証は単純です。デフォルトでは、サードパーティのコールバック アドレスは承認され、直接取得されます (通常の状況では、ユーザーが承認した後、サーバーはデータベースを通じてサードパーティのコールバック アドレスを取得し、oauth_token を承認します。 、oauth_token は常に未承認状態です)

上記のコードは、コールバック アドレスを通じて承認された request_token (oauth_token) を 5 に渡します (4 人のユーザーが自分自身を承認する場合、承認検証としてここにフォーム送信を追加できます)

5: client/get_access_token.php がアクセストークンを取得します

れーれー

$tokenInfo = $OAuth->getAccessToken($access_url); 要求されたメソッド 6


6:server/access_token.php はアクセストークンを返します

れーれー



2:get_request_token~6:server/access_token.php処理 request_tokenの取得——》request_tokenの返却——》ユーザ認可検証authorize——》検証成功コールバック——》アクセストークンの取得——>アクセストークンの返却
実行結果は以下の通りです
get_access_token にリダイレクトされ、access_token と access_secret を取得しました
現在、クライアント (サードパーティ プラットフォーム) は次のデータを取得しています。 $consumer_key: 2b4e141bf09beecdeb3479cd106038100febf399
$consumer_secret: fab40ca819c25d5fb4abf3e7cae8da5c25b67d05

$request_token:?プログラムの中間データ (このデータは通常、時間に敏感です) $request_secret:?プログラムの中間データ (このデータは通常、時間に敏感です)
$access_token: 12b6f8f6d6930e0e4d1d024c0f520527d0b84d19 (通常、このデータの有効性は無制限です) $access_secret: c77463aff2c1abbd670cfb03df4bb4247910cb78 (通常、このデータの有効性は無制限です)


次に、これらのパラメータを使用して 7:get_api.php から 8:api.php を実行します。
7: client/get_api.php は API ユーザーデータを取得します

れーれー



8:server/api.php はユーザーデータを返します

れーれー

演算結果
ダウンロード php oauth v1.0 クライアントとサーバーのプロセスと実装の詳細な説明_PHP チュートリアル

注: この (上記) コードを実行するには、php oauth v1.0 が設定され、php_curl が有効になっている必要があります


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/735878.html技術記事 PHP oauth クライアントとサーバーのプロセスと実装の概要: 1. 主にサードパーティがユーザー リソースを取得するために使用され、一般的にはユーザー情報を取得するためにサードパーティのログイン認証に使用されます 2. これはプロトコル RFC-5849 (...
)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。