使用PHP的POST CURL请求获取错误’没有授权标头’ – envato api
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用PHP的POST CURL请求获取错误’没有授权标头’ – envato api,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3234字,纯文字阅读大概需要5分钟。
内容图文
![使用PHP的POST CURL请求获取错误’没有授权标头’ – envato api](/upload/InfoBanner/zyjiaocheng/787/ba7ef5c7c97545719bb255680ae1cd72.jpg)
我开始使用Enavato API了
到目前为止,我已经创建了一个应用程序,得到了client_id& client_secret并设法从https://api.envato.com/authorization获取代码access_key,之后我使用下面的php代码发出POST卷曲请求
$client_id = '***********';
$client_secret = '***********';
$redirect_uri = urlencode('http://localhost:3000');
if(isset($_GET["code"])) :
$apiUrl = 'https://api.envato.com/token';
$params = array(
'grant_type' => 'authorization_code',
'code' => $_GET["code"],
'redirect_uri' => $redirect_uri,
'client_id' => $client_id,
'client_secret' => $client_secret,
);
$curl = curl_init();
$f = fopen('request.txt', 'w');
curl_setopt($curl, CURLOPT_URL, $apiUrl);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_STDERR, $f);
$result = curl_exec($curl);
fclose($f);
// Check if any error occurred
if(empty($result))
{
// die(curl_errno($curl));
// die(curl_error($curl));
$info = curl_getinfo($curl);
echo '<br><br>';
echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
echo '<br><br>';
var_dump($info);
echo '<br><br>';
}
var_dump($result);
// Close handle
curl_close($curl);
endif;
这是request.txt转储
* Hostname was found in DNS cache
* Hostname in DNS cache was stale, zapped
* Trying 107.23.230.180...
* Connected to api.envato.com (107.23.230.180) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* Server certificate: *.envato.com
* Server certificate: RapidSSL SHA256 CA - G3
* Server certificate: GeoTrust Global CA
> POST /token HTTP/1.1
Host: api.envato.com
Accept: */*
Content-Length: 699
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------1a95a06d7b815306
< HTTP/1.1 100 Continue
< HTTP/1.1 400 Bad Request
< Access-Control-Allow-Origin: *
< Cache-Control: no-store
< Content-Type: application/json; charset=utf-8
< Date: Sun, 17 May 2015 17:03:41 GMT
< Pragma: no-cache
* Server nginx/1.7.10 is not blacklisted
< Server: nginx/1.7.10
< set-cookie: connect.sid=s%3ARC9gGye-Txp4KLp67M9ESspXijYoUc8i.pT3jYHvu1WyOsSjwsuQzEsy5hLQlc2QpmHkZRm05pXo; Path=/; HttpOnly
< X-Frame-Options: Deny
< X-Powered-By: Express
< Content-Length: 80
< Connection: keep-alive
* HTTP error before end of send, stop sending
<
* Closing connection 0
最后是错误(以JSON获取)
string(80) “{“error”:”invalid_request”,”error_description”:”No authorization header passed”}”
令人惊讶的是,每件事都与Postman一起使用,我获得了“refresh_token”和“access_token”,并获得了成功的200状态代码.
我知道我错过了一些但却找不到的东西?
解决方法:
你正在使用curl_setopt($curl,CURLOPT_POSTFIELDS,$params); $params是一个数组.这导致HTTP POST消息具有multipart / form-data内容类型和格式.但规范说内容类型应该是application / x-www-form-urlencoded.你可以通过使用:
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
你也不需要对redirect_uri参数进行urlencode,因为http_build_query会为你做这件事.
最后,不要关闭SSL验证(CURLOPT_SSL_VERIFYHOST,CURLOPT_SSL_VERIFYPEER),因为它会使您的系统不安全.
内容总结
以上是互联网集市为您收集整理的使用PHP的POST CURL请求获取错误’没有授权标头’ – envato api全部内容,希望文章能够帮你解决使用PHP的POST CURL请求获取错误’没有授权标头’ – envato api所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。