2013-08-01 2 views
0

Я работаю с API OAuth. Первоначально я делал переадресацию заголовка, как только получил $token, чем агрегировал все параметры, которые были переданы мне. Я пытаюсь реализовать curl вместо этого, поэтому мне не нужно перенаправлять туда и обратно. Моя проблема заключается в том, что я не знаю, как получить возвращаемые параметры GET после выполнения моего запроса на завивание. Вот мой кодЗадание возврата курсора прошло обратно Параметры 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 в «Location:» поле заголовка.

EDIT:

Это будет работать, если вы ударяя сценарий на http://www.someurl.com/oauth.php и это то redriecting к http://www.someotherurl.com/somescript.php?param1=x&param2=y.

Результат $ queryArray будет массив ("param1" => 1, "param2" => 2), хотя, возможно, совершенно неправильно понял ваш вопрос ...

+0

Wow. Огромная головная боль ушла. Благодарю. – jkushner

Смежные вопросы