2014-06-12 110 views
4

連接到BigCommerce API的最新規範建議使用OAuth,因爲簡單auth方法很快將被棄用。BigCommerce API OAuth服務器到服務器腳本

我在一些PHP腳本中使用BigCommerce API,這些腳本訪問我的商店的Store API。這些腳本做相對簡單的事情,如更新產品名稱,更新產品價格等。

我很困惑我如何將這些腳本轉移到使用新的OAuth系統。我正在閱讀的所有內容都使得OAuth看起來像開發用戶安裝並授權訪問其商店的實際應用程序。但是,這顯然不是我的用例,並且讓我非常困惑。

一個簡單的例子是從我的商店檢索產品的腳本。我只是簡單地在PHP文件中運行此代碼:

Bigcommerce::configure(array(
    'store_url' => 'https://www.my-store.com', 
    'username' => 'my_username', 
    'api_key' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
)); 
Bigcommerce::setCipher('RC4-SHA'); 
Bigcommerce::verifyPeer(false); 

Bigcommmerce::getProducts(); 

如何使用OAuth實現同樣的功能?它甚至有可能嗎?

回答

2

我可能會創建一個快速的「應用程序」來獲取客戶端ID,客戶端密鑰&令牌。然後使用這些憑據進行外部身份驗證。所以你會安裝一個「認證應用程序」,但是從BC之外執行你的代碼。

請注意,這與安裝的應用程序在iframed中的工作方式沒有什麼不同。

PS,我還沒有真正嘗試過,但理論上它應該起作用。

+0

我想同樣的事情。我遇到的問題是,要獲得這些憑據,特別是令牌,您必須交換該令牌的臨時代碼。當用戶嘗試安裝我的應用程序時,臨時代碼通過GET請求發送給Auth回調URL。這是否意味着我需要將我的「認證應用程序」提交給BigCommerce批准,等待它顯示在他們的應用程序市場中,然後嘗試將其安裝到我的商店中?還是有其他方法來檢索此令牌?這裏是我指的頁面:https://developer.bigcommerce.com/apps/authentication – flyingL123

+0

如果只是爲了你,你永遠不必發佈應用程序。您可以將草稿應用程序安裝到您自己的商店並以此方式運行。如果這不是你正在尋找的,我可能需要更多的背景。 – developerscott

+0

這正是我要找的。我如何安裝草稿應用程序?我在開發人員控制檯中看不到此選項。 – flyingL123

1

我意識到這可能有點離題,我看到你正在使用PHP和我的經驗已經與C#,但認爲我會添加在這個問題上我的意見,以便也許有人會受益:

我一直在研究這種相同類型的oauth標記問題,但文檔沒有太多幫助,但是一旦我開始工作,我終於通過在本地服務器上創建了我的SSL回調頁面來設置應用程序設置。一旦我在應用程序設置中指定了該網址,我就全部設置好了。我必須做的警告是從服務器本身執行「安裝」,因爲它不是公開的URL,而是作爲商店所有者登錄到BC。然後,我可以從查詢字符串中獲得臨時令牌並將其發送回https://login.bigcommerce.com/oauth2/token,並從響應流中獲取永久令牌。 他們的API代表提到的一件事可能是有趣的,那就是最終你需要每60-90天刷新一次「永久」令牌,一旦它們按順序結束。

0

@developerscott是完全正確的,只是對添加到如何實現的代碼將OAuth與BC PHP SDK API同樣的事情,你的問題

一旦你有一個OAuth訪問令牌和client_id您創建的應用程序的一部分,您可以使用它們在您的PHP腳本中使用oAuth。你只需要提供這些憑證到Bigcommerce::configure()方法像這樣,而不是usernameapi_key屬性:

Bigcommerce::configure(array(
    'store_hash' => 'abcdef', 
    'client_id' => '123xxxx321', 
    'auth_token' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
)); 
Bigcommerce::setCipher('RC4-SHA'); 
Bigcommerce::verifyPeer(false); 

Bigcommmerce::getProducts();