2014-10-13 3 views
1

PHP에서 OAuth를 사용하여 외부 서버와 통신하려고합니다. 이것은 어떤 사용자에게도 특별한 것이없는 서버 기능에 대한 서버입니다. 따라서 모든 토큰과 비밀은 처리해야하는 보호 된 리소스를 가져 오는 중입니다. 그것과 프록시.PHP에서 CURL과 함께 사용하기위한 OAuth 요청 작성하기

프록시를 통해 PHP's OAuth을 전달하는 방법을 볼 수는 없지만 적절한 방식으로 처리하는 컬 서비스 (Symfony2 응용 프로그램 내)가 있으므로 OAuth를 사용하여 인증 헤더를 생성하고 첨부하고 싶습니다 저것은 일정한 컬에 get/post/put 얻는다. generateSignature 기능을 볼 수 있지만 컬 머리글에 적용하는 방법을 잘 모르겠습니다.

답변

1

나는 CURL에서 헤더를 설정하면

$oauth = new OAuth($this->consumerKey,$this->consumerSecret); 

$oauth->setToken($this->token,$this->tokenSecret); 
$url = $this->serviceUrl.'/locations/getlocations'; 
$nonce = mt_rand(); 
$timestamp = time(); 

$oauth->setTimestamp($timestamp); 
$oauth->setNonce($nonce); 

$sig = $oauth->generateSignature('GET',$url); 

$header = array 
(
    'Content-Type: '.$ct, 
    'Connection: keep-alive', 
    'Keep-Alive: 800000', 
    'Expect:' 
);  
$header[] = 'Authorization: OAuth '. 
      'oauth_consumer_key="'.$this->consumerKey.'"'. 
      ',oauth_signature_method="HMAC-SHA1"'. 
      ',oauth_nonce="'.$nonce.'"'. 
      ',oauth_timestamp="'.$timestamp.'"'. 
      ',oauth_version="1.0"'. 
      ',oauth_token="'.$this->token.'"'.      
      ',oauth_signature="'.urlencode($sig).'"' 
      ; 

을 매우 쉽다는 것을 발견 그리고 PHP에

curl_setopt($ch,CURLOPT_HTTPHEADER, header); 
+0

임 새로운 CURL과 함께, 당신은 변수 $ 선언 할 때이 가리키는 $ 것입니다 url = $ this-> serviceUrl. '/ locations/getlocations'; 사실,이 성명서는 무엇을 의미합니까? 현재 경로 위치를 $ url로 저장하고 있습니까? –

+0

이 코드는 개인 serviceUrl 속성이있는보다 큰 클래스의 일부입니다. 당신이 물어 본 문장은 그 속성의 끝에 문자열을 연결하고 그 결과로 $ url 변수를 설정하는 것입니다. – Craig

관련 문제