2012-12-01 64 views
2

我正在使用magento api開發電子商務iOS應用程序。目前,我正嘗試使用oAuth身份驗證請求一個令牌。iOS SDK的Magento oauth api

使用下列標題和他們的參數來驗證用戶。

Request url = http://beta.localhost.com/oauth/initiate?oauth_callback= ' http://localhost/testapp '

OAuth realm="http://beta.localhost.com/", oauth_consumer_key="pr9vx4i46lc8jv8mmiu6z2w50p9an43x", oauth_nonce="8QSHUZFRWRC5VGN3", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1354356514", oauth_version="1.0", oauth_signature="ucKs4DyFbKv6MJ1l2%2Fx4NvF819A%3D"

即時得到錯誤: oauth_problem = signature_invalid & debug_sbs = szeWMR2jNONabHyS3Ui7FIF3iPc =

我用盡了一切同樣喜歡Twitter的認證,但即時通訊有同樣的問題所困擾

而且還我我會嘗試將這些方法包含到高級休息客戶端中,但是我會得到不同的錯誤消息

我的休息客戶端響應頁面截圖。

enter image description here enter image description here

幫我通過接收進一步的步驟令牌繼續這種Magento的API。

+0

錯字使API調用? 「salestab」而不是「saletab」? – ckhan

+0

你好,我想要做同樣的過程。我必須調用一個API,但我無法與Oauth做到這一點。我使用了下面的源代碼。 http://devcenter.kinvey.com/ios/samples/oauth2di http://devcenter.kinvey.com/ios/tutorials/ios-oauth2-tutorial#HowdoIUseOAuth2 http://www.magentocommerce.com/api/ rest/authentication/oauth_authentication.html 你有什麼想法嗎,我該如何調用Magento API? –

回答

2

問題是OAuth簽名是錯誤的,這明顯表示由Magento錯誤響應。

調試簽名過程是一個相當困難的過程,它通過StackOverflow問題來完成。您找到並修復錯誤的最佳方法是在您的計算機上本地執行此操作。您需要按照Magento撰寫簽名的方式(檢查Zend_Oauth_Http_Utility::sign()方法,這會將您引導至Zend_Oauth_Signature_Hmac類),並逐步將步驟與iOS端的步驟進行比較。這將幫助您找到差異。

大多數情況下這種問題的產生是因爲三個原因:

  1. 數據部分的順序錯誤(在目前的情況下 - 你的「oauth_ *」參數)進行加工,得到簽名。在簽名算法
  2. 錯誤,當由自己來實現
  3. 錯誤編碼,以二進制簽名轉換爲字符串,並通過HTTP

比較的Magento和iOS過程及其中期業績通過它完成,將幫助您找到開始不同的步驟。因此,您將能夠了解需要解決的問題。

2

1)獲取OAuth憑證

oauth \ 
    --verbose \ 
    --query-string \ 
    --consumer-key v484mnii2jyswedm6uo2cfcjay7uy49snws \ 
    --consumer-secret koay6845che7giy5lr17gnrhckkbhf8h5 \ 
    --access-token-url http://www.yourstore.com/magento/oauth/token \ 
    --authorize-url http://www.yourstore.com/magento/oauth/authorize \ 
    --request-token-url http://www.yourstore.com/magento/oauth/initiate \ 
    authorize 

Server appears to support OAuth 1.0a; enabling support. 
Please visit this url to authorize: 
http://www.yourstore.com/magento/oauth/authorize?oauth_token=ey6fokp0pbzwr1016eb528y5xw1ak5ji 

Please enter the verification code provided by the SP (oauth_verifier): 
YOUR_CODE_HERE 

Response: 
    oauth_token_secret: g9kyz8c7zv868d58eav1muih3gxvq763 
    oauth_token: aqvlfv9tuexn0mqiydgkaff4ixxg8743c 

您訪問會要求你登錄(作爲客戶,除非您使用管理授權網址,而不是授權網址:/管理/ oAuth_authorize)。您將登錄,然後像這樣授權客戶端。

enter image description here

成功登錄後,並授權您應該可以看到這個對話框中,你會驗證代碼複製到命令行的OAuth完成該過程。

enter image description here

2)通過使用OAuth令牌

oauth \ 
    --consumer-key v484mnii2jyswedm6uo2cfcjay7uy49snws \ 
    --consumer-secret koay6845che7giy5lr17gnrhckkbhf8h5 \ 
    --token aqvlfv9tuexn0mqiydgkaff4ixxg8743c \ 
    --secret g9kyz8c7zv868d58eav1muih3gxvq763 \ 
    --uri http://www.yourstore.com/magento/api/rest/products \ 
    debug 

參考在這個領域http://www.aschroder.com/2012/04/introduction-to-the-magento-rest-apis-with-oauth-in-version-1-7/

+0

oauth命令來自哪裏?它不在我的Mac上... –

+0

晚會的方式,但它是一個寶石:sudo gem install oauth – JamesSugrue