2016-08-12 35 views
2

我正在嘗試使用重力形式休息API,https://www.gravityhelp.com/documentation/article/web-api/但我收到401錯誤,無論我嘗試。我嘗試過使用文檔和Steven Henty的文章https://www.stevenhenty.com/gravity-forms-api/中列出的所有方法,但它似乎不起作用。重力形式API總是401

如果我登錄到一個WordPress站點管理員應該我不能夠使用的鏈接,如:

http://mydomain/gravityformsapi/forms/

謝謝你的任何建議。

回答

2

由於關於路由端點的一些奇怪,我得到了同樣的結果。在計算簽名時,不要在路線上使用尾部斜線:forms/1

但你在URL中使用一個斜槓(否則我有一個301 Moved Permanently):

http://demo.gravityforms.com/gravityformsapi/the_route/?api_key...

它看起來很奇怪有/?api_key...但這是我的作品。

Here's the ruby example我用用demo credentials

GravityFormsAPI.generate_URL(site: 'demo.gravityforms.com', route: 'forms/1', public_api_key: '5b225f8382', private_api_key: 'fc6d1bc71d2ebfc')

希望這有助於。

+0

如果我想添加feild_filters或通過entry_Id獲取單個條目,無論我做什麼,它總是給出401。如果我使用的是'/',它與我沒有使用的一樣,它是一樣的。雖然瀏覽器會在URL的末尾自動添加'/'。我試圖在iOS上實現它,我遵循https://github.com/ibjects/GFAPI-iOS –

0

基於solution here我發佈了此答案。
想象一下,你已經創建了URL並且它沒有工作,並且你得到了401。然後在一段時間之後,你意識到了Opps的錯誤!我傳遞的參數需要一個括號,然後再次運行代碼,然後再次獲得401。 這是爲什麼?

這是因爲apiKey,Signature和Expire時間參數是相同的,而您只是通過GET請求更改了其他參數。但是,這三個參數用於驗證用戶,因此這意味着生成拒絕該許可的舊簽名無論如何都將拒絕該簽名。

因此,要解決這個問題,我只是將過期時間從1577922200更改爲1577933200。我可以把它改成任何東西,但事情是我只需要給一些新東西,這樣就可以生成一個新的簽名。所以當我改變它開始工作。

其他可能的原因

在使用SHA1使得簽名您使用NSString *string_to_sign = [NSString stringWithFormat:@"%@:%@:%@:%@",api_key,http_method,route,expires]; 按文檔。但爲了使CCHmac你必須通過它兩件事情:

  1. 重點
  2. 數據

,並在此基礎上,作爲

const char *cKey = [api_private_key cStringUsingEncoding:NSASCIIStringEncoding]; 
const char *cData = [string_to_sign cStringUsingEncoding:NSASCIIStringEncoding]; 

創建link所以我誤解是我在cKey中使用API Key而不是API Private Key。所以我根據教程的說法改變了它,它工作。否則,我得到401無論我嘗試什麼。

1

對於我的情況是,我沒有cli點擊更新按鈕「Web API」選項卡。

確保您單擊更新按鈕,雖然它確實顯示了API密鑰,但仍需要單擊更新按鈕才能啓用API。

+0

謝謝你,讓我難住了一段時間!爲了總結其他人,在勾選'啓用'複選框以在Gravity Forms API設置中啓用對API的訪問並點擊'更新'按鈕後,一旦API憑證有了,您需要再次點擊'更新'按鈕已生成。不符合邏輯我知道但似乎是答案! –