我从以下位置获取访问令牌时遇到了一些问题:
api.hybrid.ru/token
此API的文档是俄语(Link),它基本上说:
Headers
POST /token HTTP/1.1
Host: api.hybrid.ru
Content-Type: application/x-www-form-urlencoded
Data:
grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}
我有有效的client_id和client_secret(hybrid.ru techs给了我那些),它甚至不会返回错误消息。 我使用CURL,然后是我的代码:
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$ch = curl_init();
$url = "https://www.api.hybrid.ru/token";
$post_data = array(
'grant_type'=> 'client_credentials',
'client_id'=>'********',
'client_secret'=>'********'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"POST /token HTTP/1.1",
'Content-Type: application/x-www-form-urlencoded',
"host: api.hybrid.ru"
));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch,CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_POSTREDIR, 3);
$output = curl_exec($ch);
curl_close($ch);
print_r($output);
?>
我想,如果client_id或client_secret API中存在一些错误,至少应该返回一些错误消息。
还有一个问题,client_secret可以包含字符“=”吗?他们给了我带有尾随“=”符号的client_secret。无论如何,无论是否有角色,它都不会返回任何数据。
任何帮助?
更新1
按照Lorna Mitchell的回答后,我收到了这样的消息:
Array (
[url] => https://api.hybrid.ru/Views/Errors/DefaultError.cshtml?aspxerrorpath=/
[content_type] => text/html; charset=utf-8 [http_code] => 500 [header_size] => 483
[request_size] => 440
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 1
[total_time] => 3.853833
[namelookup_time] => 0.972059
[connect_time] => 1.178887
[pretransfer_time] => 1.406303
[size_upload] => 479
[size_download] => 1763
[speed_download] => 457
[speed_upload] => 124
[download_content_length] => 1763
[upload_content_length] => 479
[starttransfer_time] => 1.612792 [redirect_time] => 2.028607
[redirect_url] =>
[primary_ip] => 212.8.236.42
[certinfo] => Array ( )
[primary_port] => 443
[local_ip] => 162.214.7.244
[local_port] => 46088
)
HTTP/1.1 100 Continue HTTP/1.1
302 Found
Date: Wed, 26 Jul 2017 16:47:47 GMT
Content-Length: 166
Connection: keep-alive
Location: /Views/Errors/DefaultError.cshtml?aspxerrorpath=/
Server: Hybrid Web Server HTTP/1.1 100 Continue HTTP/1.1 500 Internal Server
Error
Date: Wed, 26 Jul 2017 16:47:49 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1763
Connection: keep-alive
Cache-Control: private
X-AspNet-Version: 4.0.30319
Server: Hybrid Web Server
之后的任何想法?
答案 0 :(得分:1)
curl_error($ch)
是否会返回任何有用的信息?
检查CURLOPT_HTTPHEADER的设置位置,并删除除内容类型之外的所有内容(此处的其他部分不是标题,文档中的示例显示了请求在发送时的外观)。
您还可以使用http://requestb.in等工具检查您的代码发送的内容。去那里,创建一个新的bin,并将其用作代码中的URL。您将能够检查代码发送的内容并检查其是否正确。
如果它看起来正确,那么您尝试集成的API有一个错误:(