目標: Zend Framework Web アプリケーション内で使用する Oauth プロバイダーを作成する。
ここまでのプロセス: Zend Framework OAuth クライアント (ZF 1.12) を Google Code OAuth クラスと統合しました [http://code.google.com/p/oauth/]。www サイトでクライアントとして使用する ZF クライアント、API サイトの認証ラッパーで使用する Google コード OAuth。
ソリューションを機能させるための支援を探しています。
URL に GET パラメータがあり、両方のフレームワークが異なる署名を生成して認証を破る場合を除き、このソリューションは基本的なリクエストに適しています。
サンプルコード www:
$uri = 'http://oauth.example.com/search?q=something';
$Application = array();
$Application['oauth_consumer_key'] = 'app';
$Application['oauth_consumer_secret'] = 'appsecret';
$token = new Zend_Oauth_Token_Access();
$config = array(
'consumerKey' => $Application['oauth_consumer_key'],
'consumerSecret' => $Application['oauth_consumer_secret'],
);
$client = $token->getHttpClient($config);
$client->setUri($uri);
$client->setMethod(Zend_Http_Client::POST);
$client->setHeaders('Content-Type', 'application/json');
$response = $client->request();
サンプル コード API:
require_once 'OAuth.php';
$userRequest = OAuthRequest::from_request(null, null, null);
$params = $userRequest->get_parameters();
$params['user_request'] = $userRequest;
$request = $params;
$application = array(
'token' => 'app',
'secret' => 'appsecret',
);
// Test OAuth tokens
$oauthConsumer = new OAuthConsumer($application['token'], $application['secret']);
$oauthToken = null;
$signatureMethod = new OAuthSignatureMethod_HMAC_SHA1();
$signature = $signatureMethod->build_signature(
$request['user_request'],
$oauthConsumer,
$oauthToken
);
// If signatures match, return true
if ($request['oauth_signature'] == $signature) {
return true;
}
return false;
Zend_Oauth_Token_Access は、oauth クラスがすべてのパラメータを考慮するカスタム パラメータ (上記の「?q=」を参照) を無視しているようです。これは、パラメータがない場合、両方のシステムが同じ署名を生成することを意味します。
Zend Oauth クライアントに GET パラメータを考慮させることができないようです。
助けてください?