Zend_OAuth_Consumer ソリューションを使用することをいとわない人のために、OAuth リクエストを処理するために必要なすべての簡単な手順と、応答に続くすべての困難な手順を処理するので、私が強くお勧めする Zend_OAuth_Consumer ソリューションを以下に示します。
1) コンシューマ インスタンスを確立します。
$consumer = new Zend_Oauth_Consumer(array(
'callbackUrl' => FLICKR_REDIRECT_URL /* from my app settings */,
'siteUrl' => 'http://www.flickr.com/services/oauth',
'consumerKey' => FLICKR_API_KEY,
'consumerSecret' => FLICKR_API_SECRET,
'requestTokenUrl' => FLICKR_REQUEST_TOKEN_URL /* www.flickr.com/services/oauth/request_token */,
'accessTokenUrl' => FLICKR_ACCESS_TOKEN_URL /* www.flickr.com/services/oauth/access_token */,
'authorizeUrl' => FLICKR_AUTHORIZE_URL /* www.flickr.com/services/oauth/authorize */
));
2) リクエスト トークンを取得し、それを $_SESSION 変数に保存します (または、必要なその他のストレージ メカニズムを使用します)。戻りオブジェクトをセッション変数の文字列としてシリアル化してください。
$token = $consumer->getRequestToken();
$_SESSION['FLICKR_REQUEST_TOKEN'] = serialize($token);
3) パーミッションの設定に問題があった場合は、コンシューマー インスタンスのメソッドを使用してリダイレクトし、この時点でパーマを設定します (つまり、「読み取り」、「書き込み」、「削除」など...):
$consumer->redirect(array("perms" => FLICKR_API_PERMS /* 'read', 'write', 'delete', etc... */));
4) リダイレクト先のページ (つまり、FLICKR_REDIRECT_URL) で、新しいコンシューマー インスタンスを作成し、アクセス トークンを取得して $_SESSION に保存し、セッション リクエスト トークン変数の設定を解除します。
$consumer = new Zend_Oauth_Consumer(array(
'callbackUrl' => FLICKR_REDIRECT_URL /* from my app settings */,
'siteUrl' => 'http://www.flickr.com/services/oauth',
'consumerKey' => FLICKR_API_KEY,
'consumerSecret' => FLICKR_API_SECRET,
'requestTokenUrl' => FLICKR_REQUEST_TOKEN_URL /* www.flickr.com/services/oauth/request_token */,
'accessTokenUrl' => FLICKR_ACCESS_TOKEN_URL /* www.flickr.com/services/oauth/access_token */,
'authorizeUrl' => FLICKR_AUTHORIZE_URL /* www.flickr.com/services/oauth/authorize */
));
$token = $consumer->getAccessToken($_GET, unserialize($_SESSION['FLICKR_REQUEST_TOKEN']));
$_SESSION['FLICKR_ACCESS_TOKEN'] = serialize($token);
$_SESSION['FLICKR_REQUEST_TOKEN'] = null;
5) この時点で、Flickr に対して承認済みのリクエストを行うことができるはずです。
$token = unserialize($_SESSION['FLICKR_ACCESS_TOKEN']);
$client = $token->getHttpClient(array(
'callbackUrl' => FLICKR_REDIRECT_URL /* from my app settings */,
'siteUrl' => 'http://www.flickr.com/services/oauth',
'consumerKey' => FLICKR_API_KEY,
'consumerSecret' => FLICKR_API_SECRET,
'requestTokenUrl' => FLICKR_REQUEST_TOKEN_URL /* www.flickr.com/services/oauth/request_token */,
'accessTokenUrl' => FLICKR_ACCESS_TOKEN_URL /* www.flickr.com/services/oauth/access_token */,
'authorizeUrl' => FLICKR_AUTHORIZE_URL /* www.flickr.com/services/oauth/authorize */
));
$client->setUri("http://api.flickr.com/services/rest/");
$client->setMethod(Zend_Http_Client::GET);
$client->setParameterGet("method", "flickr.contacts.getList");
$client->setParameterGet("api_key", FLICKR_API_KEY);
$response = $client->request();
header('Content-Type: text/xml');
echo $response->getBody();
これが誰かに大いに役立つことを願っています。コードカルマ =)