0

我正在使用 OAuth API。最初,我在收到我的信息后进行标头重定向,$token而不是汇总所有GET传回给我的参数。我正在尝试实现 curl,所以我不必来回重定向。GET我的问题是,在发出 curl 请求后,我不知道如何检索返回的参数。这是我的代码

        $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。我如何检索这些?

    -
4

1 回答 1

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 的结果将是 array("param1" => 1, "param2" => 2),尽管我可能完全误解了你的问题......

于 2013-08-01T08:47:12.033 回答