PHP Curl Basic OAuth获取访问令牌

时间:2016-07-22 13:36:50

标签: php api authentication curl oauth

我试图从印第安市场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

2 个答案:

答案 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