php oauthクライアントとサーバーのプロセスと実装
紹介:
1. 主にサードパーティがユーザーリソースを取得するために使用され、通常はユーザー情報を取得するためのサードパーティのログイン認証に使用されます。
2. RFC-5849 プロトコルです (ソフトウェアやサービスではありません)
3. 認証 + 認可
フローチャート:
各プラットフォームのフローチャート
163
| happy.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_curl が有効になっている必要があります
http://www.bkjia.com/PHPjc/735878.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/735878.html技術記事 PHP oauth クライアントとサーバーのプロセスと実装の概要: 1. 主にサードパーティがユーザー リソースを取得するために使用され、一般的にはユーザー情報を取得するためにサードパーティのログイン認証に使用されます 2. これはプロトコル RFC-5849 (...
)