基於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
你必須通過它兩件事情:
- 重點
- 數據
,並在此基礎上,作爲
const char *cKey = [api_private_key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [string_to_sign cStringUsingEncoding:NSASCIIStringEncoding];
創建link所以我誤解是我在cKey
中使用API Key
而不是API Private Key
。所以我根據教程的說法改變了它,它工作。否則,我得到401
無論我嘗試什麼。
如果我想添加feild_filters或通過entry_Id獲取單個條目,無論我做什麼,它總是給出401。如果我使用的是'/',它與我沒有使用的一樣,它是一樣的。雖然瀏覽器會在URL的末尾自動添加'/'。我試圖在iOS上實現它,我遵循https://github.com/ibjects/GFAPI-iOS –