2015-06-29 187 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

相關問題