言及する価値のある、優れた純粋な PHP OAuth オプションがいくつかあります。それらの良い部分と悪い部分を理解するには、OAuth のしくみを理解する必要があります。確認してみましょう。
この例では、プロバイダーは Imgur、コンシューマーはコード、ユーザーはユーザーです。
- プロバイダーは、コンシューマー キーとコンシューマー シークレットをコンシューマーに発行します。
- ユーザーはコンシューマーにリクエストを送信します。
- コンシューマはプロバイダにリクエスト トークンとリクエスト シークレットを要求します。これらは通常、ユーザーのセッションに保存されます。
- コンシューマーは、リクエスト トークンを使用してユーザーをプロバイダーにリダイレクトします。ネット上のほとんどの例では、ユーザーのセッション状態が "1" に設定されています。
- ユーザーは、プロバイダーを使用してコンシューマーのアクセスを許可します。
- プロバイダーは、(別の?) リクエスト トークンを使用してユーザーをコンシューマーに送り返します。
- コンシューマは、返されたリクエスト トークンと以前に送信されたリクエスト シークレットをプロバイダに送信します。
- プロバイダーは、アクセス トークンとアクセス シークレットを返します。これらは通常、ユーザーのセッションに保存されますが、長期間保存される可能性があり、より長期的な保存場所に適している場合があります。
- コンシューマーからプロバイダーへのさらなる要求には、コンシューマー キー、コンシューマー シークレット、アクセス トークン、およびアクセス シークレットが必要です。
ステップ 9 に到達すると、コード内の OAuth オブジェクトには、リクエストを実行するために必要なものがすべて揃っています。重要な重要な部分は、ネットワーク経由で送信されるデータに適切に署名できるように、OAuth オブジェクトが API 要求自体を処理する必要があることです。
選択できる 2 つの良いオプションと、あまり良くないオプションがあります。良いものを見てみましょう:
1 つ目はPEAR の HTTP_OAuthで、基になる HTTP ライブラリとしてHTTP_Request2を使用します。正常に動作しますが、HTTP_OAuth_Consumer_Requestはリクエスト オブジェクトへのゲートウェイとして機能しますが、それを継承しません。これは、HTTP_Request2 に対して実行できるすべてのことを実行できるわけではないことを意味します。これは煩わしい場合があります。
2 つ目は、Zend Framework の Zend_Oauth です。これは、Zend_Http_Clientを基になる HTTP ライブラリとして使用します。それはより大きな Zend フレームワークの一部ですが、2 つのコンポーネントはほとんど独立しており、他のフレームワークやフレームワークなしでもうまく機能します。PEAR ライブラリとは異なり、Zend_Oauth_Consumer は実際には Zend_Http_Client から派生したクラスを返します。それ自体が奇妙なことをしないと言っているわけではありません。セッションでトークンとシークレットを隠しておくように要求する代わりに、トークンとシークレットを含むステータス トークン オブジェクトをシリアル化する必要があります。それは仕事を成し遂げますが、それはただ奇妙です。
いぼを無視して、どちらもあなたにとって良い選択肢です. どちらもリベラルなオープン ソース ライセンスの下でリリースされているため、コードにバンドルしても問題はありません。*
あまり良くないカテゴリには、oauth-phpがあります。私は図書館での作業を気にしませんでした。気を散らすものが多すぎて、それについて私を苛立たせたささいなことでした。PECL の oauth 拡張もあります。CURL を使用していますが、CURL ハンドルを取得して独自の適切な要求を行うことは不可能です。あなたはそれをインストールしていないことにも言及しました。それが、それほど良くないカテゴリにある理由です.
Imgur とのインターフェースに関しては、単なるバニラの JSON です。PHP のネイティブjson_encode
をいじっjson_decode
ても、まったく問題はありません。API ドキュメントは非常に優れています。
* 私は弁護士ではありません。弁護士に相談してください。(この回答の一部は、たまたま、私が書き始めた不完全な
Imgur APIライブラリからそのままコピーされています。残念ながら、アルバムについては何も実装していません。それ以外の場合は、リンクするだけです。必要なことを実行したら、やめました。ごめんなさい)