2015-06-29 141 views
3

调用Shopify API时我有一个有趣的情况。我用的是标准程序调用的URL和获取数据,如:API请求从本地机器运行,而不是在服务器上运行

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) 

我试图创建一个新的应用程序,但仍然是其不变。所以相同的文件和相同的集合在我的机器上工作,但不在服务器上。 (文件中的唯一区别是请求库的路径,require_once './Requests/library/Requests.php';对于Linux和require_once '..\Requests\library\Requests.php';对于Windows)如上所述,我使用requests库,我认为必须有一些技巧,库(或其他)重写URl和它没有正确地使用Shopify。

我试着直接使用CURL和URL,它也是这样工作的。任何人都可以指出我可能会造成这种情况吗?

更新:我搬到另一个图书馆解决了这个问题,但想知道是什么原因造成的,因为我对Requests有很好的经验,直到现在。

回答

1

我想不通这是怎么回事,它出现在Requests库是从GET要求剥离的参数,所以我搬到unirest库,这个问题得到了解决。

2

我开始使用相同的lib和我发现这个问题后偶然发现了一些相关权利: https://github.com/rmccue/Requests/issues/142#issuecomment-147276906

引用相关部分:

这是API的故意一部分设计;在典型的使用案例中, 您不一定需要与请求一起发送数据。建筑 你的URL只是一个方便。

Requests :: get是一个帮助函数,用于在代码中使GET请求 轻量级,这就是为什么在那里没有$ data参数 的原因。如果你需要发送数据时,使用的要求::请求,而不是

$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); 
+0

它仍然没有解释它是如何工作和本地生产服务器(的Windows开发,Ubuntu的正式版)上的差异,所以我想它也许还有其他的东西。另外,由于GET请求传递参数是一种相对常见的情况,因此我期望有关于此的一些文档,因为看起来有多个人有问题。感谢您的回答,它为这个问题提供了一个亮点! –

+0

我同意一定有一些其他问题,但一步一步调试,以确保正确的网址发送是我唯一的方式来跟踪它。 – Anarkopsykotik

相关问题