2013-08-01 5 views
0

OAuth API로 작업하고 있습니다. 원래 $token을받은 후 헤더를 리디렉션했습니다. 다시 전달 된 GET 매개 변수를 모두 집계했습니다. 대신 컬을 구현하여 앞뒤로 리디렉션 할 필요가 없습니다. 내 문제는, 내 곱슬 요청을 한 후 반환 된 GET 매개 변수를 검색하는 방법을 모르겠습니다. 여기 내 코드가Curl 문제 검색이 GET 매개 변수를 통해 전달되었습니다.

 $qry_str = "?oauth_token=" . $token; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, GSAPI_AUTHORIZE_ENDPOINT . $qry_str); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_TIMEOUT, '3'); 
     $content = trim(curl_exec($ch)); 

나는 $content이 필요 없다는 것을 깨달았다. 내가 필요한 것은 GET 매개 변수로, curl_exec을 시작할 때 발생한다고 생각되면 다시 전달되어야합니다. 어떻게 검색합니까?

    -

답변

2

당신이해야 할 것은 반환 문자열의 일부로서 헤더를 반환하는 컬 요청을받을 수 있습니다. 그런 다음 "Location :"태그에 대해 구문 분석하고 PHP에서 내장 된 구문 분석 함수 중 일부를 사용하여 원하는 데이터를 가져와야합니다. 아래를보십시오.

$qry_str = "?oauth_token=" . $token; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, GSAPI_AUTHORIZE_ENDPOINT . $qry_str); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, '3'); 
$content = trim(curl_exec($ch)); 

if(!$content) echo 'Curl error: ' . curl_error($ch); 

preg_match('/Location\:\s(.*)\s/',$content,$matches); 
$urlParts = parse_url(trim($matches[1])); 
parse_str($urlParts['query'],$queryArray); 

$ queryArray 변수에는 헤더의 "위치 :"필드에있는 URL의 모든 쿼리 문자열 매개 변수가 포함되어야합니다.

편집 :

당신이 http://www.someurl.com/oauth.php에서 스크립트를 타격하고 다음 http://www.someotherurl.com/somescript.php?param1=x&param2=y에 redriecting 않다면이 작동합니다. 나는 완전히 질문을-잘못 이해가있을 수 있지만

$ queryArray의 결과

+0

와우 ..., 배열 ("PARAM1"=> 1, "PARAM2"=> 2)입니다. 거대한 두통이 사라졌습니다. 감사. – jkushner

관련 문제