Oauth2 PHP没有返回数据

时间:2017-07-25 16:45:21

标签: php rest curl oauth-2.0

我从以下位置获取访问令牌时遇到了一些问题:

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

之后的任何想法?

1 个答案:

答案 0 :(得分:1)

curl_error($ch)是否会返回任何有用的信息?

检查CURLOPT_HTTPHEADER的设置位置,并删除除内容类型之外的所有内容(此处的其他部分不是标题,文档中的示例显示了请求在发送时的外观)。

您还可以使用http://requestb.in等工具检查您的代码发送的内容。去那里,创建一个新的bin,并将其用作代码中的URL。您将能够检查代码发送的内容并检查其是否正确。

如果它看起来正确,那么您尝试集成的API有一个错误:(