调用Shopify API时我有一个有趣的情况。我使用标准程序来调用url并获取数据,如下所示:
define('SHOPIFY_SHOP', 'myteststore.myshopify.com');
define('SHOPIFY_APP_API_KEY', 'xxxx');
define('SHOPIFY_APP_PASSWORD', 'yyy');
$shop_url = 'https://'.SHOPIFY_APP_API_KEY.':'.SHOPIFY_APP_PASSWORD.'@'.SHOPIFY_SHOP;
$response = Requests::get($shop_url.'/admin/products.json');
我正确得到了回复,解析数据并且所有工作都很棒。现在,当我把它放到实际的服务器(Ubuntu 12.04)时,我注意到来自Spotify API的一个奇怪的消息:
[API] Invalid API key or access token (unrecognized login or wrong password)
我尝试创建一个新应用,但仍然是相同的。所以相同的文件和相同的设置在我的机器上工作,但不在服务器上。 (只有文件中的差异是请求库的路径,Linux的require_once './Requests/library/Requests.php';
和Windows的require_once '..\Requests\library\Requests.php';
如上所述,我使用requests库,我认为必须有一些技巧库(或其他东西)重写URl并且它没有正确地进行Shopify。
我尝试直接使用CURL和URL,它也是这样的。任何人都可以指出我可能导致这种情况的原因吗?
更新:我转移到另一个解决了这个问题的库,但是想知道是什么导致了这个问题,因为到目前为止我对Requests
有很好的经验。
答案 0 :(得分:2)
我开始使用相同的lib,在找到这个问题之后我偶然发现了一些相关内容: https://github.com/rmccue/Requests/issues/142#issuecomment-147276906
引用相关部分:
这是API设计的一个有意的部分;在典型的用例中, 您不一定需要与请求一起发送的数据。建造 你的网址只是一个方便。
Requests :: get是一个用于发出GET请求的辅助函数 代码中的轻量级,这就是没有$ data参数的原因 那里。如果您需要发送数据,请使用Requests :: request
$response = Requests::request( 'http://httpbin.org/get', $headers, $data, Requests::GET, $options );
// GET is the default for type, and $options can be blank, so this can be shortened:
$response = Requests::request( 'http://httpbin.org/get', $headers, $data );
答案 1 :(得分:1)
我无法理解为什么会发生这种情况,Requests
库正在从GET
请求中删除参数,因此我转移到unirest
库,这解决了这个问题。