我试图从印第安市场Flipkart提供的API获取访问令牌,如果我在Putty SSH中运行curl代码我能够接收访问令牌,但是如果我从PHP尝试同样的事情它&# 39;给我400错误。
SSH中使用的代码(本作品)
curl -u appid:appsecret https://api.flipkart.net/oauth-service/oauth/token\?grant_type\=client_credentials\&scope=Seller_Api
我得到回复
{"access_token":"1111-xxxx-22222","token_type":"bearer","expires_in":4926731,"scope":"Seller_Api"}
但是当我尝试使用PHP Curl(我只在线学习)实现相同的功能时,我得到400错误
使用的PHP代码(这确实有效)
<?php
$username='appid';
$password='appsecret';
$url='https://api.flipkart.net/oauth-service/oauth/token\?grant_type\=client_credentials\&scope=Seller_Api';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
$output = curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code
$info = curl_getinfo($ch);
curl_close($ch);
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
print_r($output);
echo $status_code;
?>
没有其他输出而不是400(状态代码)是不好的请求。
我知道我很亲密,我不知道自己做错了什么。 任何帮助将不胜感激。
PS:您可以在此处找到API文档https://seller.flipkart.com/api-docs/FMSAPI.html#third-party-application-integration
答案 0 :(得分:0)
我终于能够解决问题了,当我们尝试使用php curl做同样的事情时,他们在文档中提到的url不起作用。
在php的情况下,URL的短语是不同的
所以URL应该是 $ URL = 'https://api.flipkart.net/oauth-service/oauth/token?grant_type=client_credentials&scope=Seller_Api';
瞧,我拿到了我的访问令牌。
PS:请不要以为我不耐烦并且在环顾四周之前过早地问这个问题,这是我第二天遇到同样的问题。但我今天很幸运;)答案 1 :(得分:-1)
为什么有些斜线是朝后的?
“?”表示后面是参数(可以说是变量)及其日期。
在您的 URL 上传递多个参数(可以说是变量)时使用“&”。
就您而言,您的参数或网址变量是: grant_type 和范围
这些参数的数据或值分别是 client_credentials 和 Seller_Api。
您使用“=”符号为参数赋值。
总结: -知道你的网址:https://api.flipkart.net/oauth-service/oauth/token - 了解您的参数并为其赋值: - 参数 1:grant_type=client_credentials - 参数 2:scope=Seller_Api - 使用“?”加入 ULR 这个参数 - https://api.flipkart.net/oauth-service/oauth/token?grant_type=client_credentials 还有其他参数吗?也使用“&”加入它 - https://api.flipkart.net/oauth-service/oauth/token?grant_type=client_credentials&scope=Seller_Api