Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中添加用于身份验证的curl HTTP头?_Php_Authentication_Curl_Http Headers - Fatal编程技术网

如何在PHP中添加用于身份验证的curl HTTP头?

如何在PHP中添加用于身份验证的curl HTTP头?,php,authentication,curl,http-headers,Php,Authentication,Curl,Http Headers,我想添加HTTP头来验证API访问。有人能告诉我如何添加头吗?我已经有了客户端id和密钥。我想从PHP页面访问API。 以下是我尝试使用的代码: $ch = curl_init($request); curl_setopt($ch, CURLOPT_URL, $request); curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-Udemy-Client-Id:MY_ID','X-Udemy-Client-Secret:Secret')); curl_set

我想添加HTTP头来验证API访问。有人能告诉我如何添加头吗?我已经有了客户端id和密钥。我想从PHP页面访问API。 以下是我尝试使用的代码:

$ch = curl_init($request);
curl_setopt($ch, CURLOPT_URL, $request);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-Udemy-Client-Id:MY_ID','X-Udemy-Client-Secret:Secret'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$results= curl_exec($ch);
echo $results;
输出:

Blank Page

有人能指出问题出在哪里吗?

正如@drmavelous所写,您执行两个请求(第一个是通过CURL,第二个是通过
文件获取内容),这两个请求的作用相同。其中,CURL请求的结果实际上没有在脚本中使用。它使用在没有身份验证参数的情况下执行的
file\u get\u contents
请求的结果。因此,您将获得
未经授权的
错误

因此,您必须使用CURL请求的结果:

...
$json = json_decode($results, true);
print_r($json);
更新:

您必须确保对API请求使用有效的URL,即代码中的
$request
值应为有效的URL。另外,请确保通过HTTP头传递有效的身份验证参数(
Client Id
Client Secret

此外,由于API是安全的,您必须通过将
CURLOPT_SSL\u VERIFYPEER
选项设置为
false
来禁用SSL对等验证

因此,代码应该如下所示:

$ch = curl_init($request);
curl_setopt($ch, CURLOPT_URL, $request);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-Udemy-Client-Id: {YourID}','X-Udemy-Client-Secret: {YourSecret}'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$results= curl_exec($ch);
echo $results;

为什么运行curl请求,然后运行file\u get\u内容?回应结果@drmarvelous我基本上想访问wordpress主题中json格式的API提要。但是它没有经过身份验证。正确,但是你已经在用curl做了。现在你正在执行两个不同的请求(尽管格式不正确),我这样做了,它给了我一个空白页;这是一个空白页,但你期望什么呢?有消息吗?我认为空白页是对身份验证请求的正常响应。例如,“no messages”表示“OK”(无错误)。哦,我希望看到api页面上显示的提要。我想访问提要数据。您无法获取身份验证请求中的数据。它只用于验证用户,不用于获取数据即使我输入了错误的API密钥,它也会显示一个空白页。对于在验证后访问数据,我必须做什么?