目標:創建一個在Zend Framework Web應用程序中使用的Oauth提供程序。
到目前爲止的過程:將Zend Framework OAuth客戶端(ZF 1.12)與Google Code OAuth類[http://code.google.com/p/oauth/]集成。 ZF客戶端用作www站點中的客戶端,谷歌代碼OAuth用於api站點中的身份驗證包裝器。
尋求幫助,使解決方案正常工作。
該解決方案適用於基本的請求 - 除非在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無視自定義參數(見上面的 'Q =?'),其中的OAuth類考慮所有參數。這意味着,當沒有參數時,兩個系統都會生成相同的簽名。
我似乎無法得到Zend Oauth客戶端來考慮GET參數。
請幫忙?
我應該提到,我第一次嘗試創建驗證應用程序簽名。用戶簽名將在稍後添加。 –