我无法使用下载脚本:
我正在使用名为swiftdil的api。他们的例子如下:
示例请求:
curl -X POST https://sandbox.swiftdil.com/v1/oauth2/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-u 'your_username:your_password'
示例输出:
{
"access_token":"your_access_token",
"expires_in": 3600,
"refresh_expires_in": 1800,
"refresh_token": "your_refresh_token",
"token_type": "bearer",
"not-before-policy": 0,
"session_state": "your_session_state"
}
因此,我提交凭据的网址为https://sandbox.swiftdil.com/v1/oauth2/token
我尝试过以下代码:
// Api Credentials
$url = 'https://sandbox.swiftdil.com/v1/oauth2/token';
$username = "my_username";
$password = "my_password";
// Set up api environment
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:
application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" .
$password);
// Give back curl result
$output = curl_exec($ch);
$info = curl_getinfo($ch);
$curl_error = curl_error($ch);
curl_close($ch);
print_r($output);
print_r($info);
print_r($curl_error);
?>
脚本给了我以下结果:
HTTP/1.1 400 Bad Request Server: nginx/1.13.8 Date: Tue, 15 May 2018 09:17:26 GMT Content-Type: text/html Content-Length: 173 Connection: close
400错误请求。
我错过了什么吗?我满足上面给出的例子的需要吗?我确实做了一个postcall,按要求提供所有的证明,但仍然无法得到任何回报。
答案 0 :(得分:2)
我不是PHP开发人员,我主要做JavaScript。当我与其他REST服务集成时,我倾向于使用Postman(https://www.getpostman.com/)。
尝试以下方法:
尝试使用Postman成功连接API(应该相对简单)。
成功后,Postman可以自动生成PHP代码,然后您可以复制和粘贴。像JavaScript的魅力一样,不知道为什么它与PHP会有所不同。
我根据你提供的内容填写邮递员的详细信息:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sandbox.swiftdil.com/v1/oauth2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=",
"Content-Type: application/x-www-form-urlencoded"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
请注意,&#39;授权:基本&#39;可以用作基本的授权机制而不是“承载”#39; (它也应该工作)。所以替换&#39; bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ&#39;使用base64编码的字符串&#39;用户名:密码&#39; (使用实际的用户名和密码)。
答案 1 :(得分:0)
您还需要根据数据设置以下选项来设置卷曲帖子字段。
"curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'code' => $code,
'client_id' => $client_id,
'client_secret' => $client_secret,
'redirect_uri' => $redirect_uri,
'grant_type' => 'authorization_code'
))";
If still not work, you can find the curl error as :
if(curl_error($ch))
{
echo 'error:' . curl_error($ch);
}