我正在使用OAuth API。最初,我收到$token
后正在进行标题重定向,而不是汇总传回给我的所有GET
参数。我正在尝试实现curl,所以我不必来回重定向。我的问题是,我不知道如何在发出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
时发生这些参数。我该如何检索这些?
答案 0 :(得分:2)
您需要做的是获取curl请求以返回标头作为返回字符串的一部分。然后,您需要为“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变量现在应该包含标题“Location:”字段中URL的所有查询字符串参数。
编辑:
如果你在http://www.someurl.com/oauth.php点击一个脚本然后它会重新发送到http://www.someotherurl.com/somescript.php?param1=x¶m2=y,这将有效。
$ queryArray的结果将是数组(“param1”=> 1,“param2”=> 2),虽然我可能完全误解了你的问题......