2012-11-19 2 views
2

목표 : Zend Framework 웹 응용 프로그램 내에서 사용할 Oauth 공급자 만들기.

프로세스 : Zend Framework OAuth 클라이언트 (ZF 1.12)를 Google 코드 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 사용자 정의 매개 변수를 무시 보인다는 (참조 위의 'Q =?')는 OAuth를 클래스 고려 곳 모든 매개 변수. 즉, 매개 변수가없는 경우 두 시스템이 동일한 서명을 생성합니다.

Zend Oauth 클라이언트가 GET 매개 변수를 고려하지 못하는 것 같습니다.

도와주세요.

+0

먼저 내가 확인을 위해 응용 프로그램 서명을 만들려고합니다. 사용자 서명은 나중에 추가됩니다. –

답변

0

ZF1에는 oauth 공급자 (oauth 1.0a 또는 2)가 포함되어 있지 않습니다. https://github.com/smalyshev/Zend_OAuth_Provider과 같은 몇 가지 oauth 1.0a 공급자를 찾았지만 내 응용 프로그램에 oauth 2.0 지원을 추가하고 싶었습니다.

https://github.com/quizlet/oauth2-php을 얻고 저장 어댑터로 Zend_Db_Table을 추가했습니다. 이 프로젝트 코드 중 일부는 지저분하지만, 지금까지 찾은 최고의 php oauth2 공급자입니다.

원하는 경우 코드를 github repo에서 공유 할 수 있습니다.

+1

감사합니다. 곧이 라이브러리를 살펴 보겠습니다. 아마 Zend Oauth 소비자가 더 잘 행동 할 것입니다. –