2016-03-12 97 views
0

所以,我玩弄(從零售商店包含提供丹麥目錄)Etilbudsavis' API(與使用Python的API播放)。 我的目標是獲取基於搜索查詢數據。 the API acutally allows this,開箱即用。但是,當我嘗試這樣做時,最終出現錯誤,說我的令牌丟失了。不管怎麼說,這裏是我的代碼:爲什麼我會遇到這個錯誤 - 「缺少令牌」?

from urllib2 import urlopen 
from json import load 
import requests 

body = {'api_key': 'secret_api_key'} 

response = requests.post('https://api.etilbudsavis.dk/v2/sessions', data=body) 

print response.text 

new_body = {'_token:': 'token_obtained_from_POST_method', 'query:': 'coca-cola'} 

new_response = requests.get('https://api.etilbudsavis.dk/v2/offers/search', data=new_body) 

print new_response.text 

完整的錯誤:

{"code":1107,"id":"00ilpgq7etum2ksrh4nr6y1jlu5ng8cj","message":"missing token"," 
details":"Missing token\nNo token found in request to an endpoint that requires 
a valid token.","previous":null,"@note.1":"Hey! It looks like you found an error 
. If you have any questions about this error, feel free to contact support with 
the above error id."} 

回答

1

由於這是一個GET請求,你應該使用params參數傳遞在URL中的數據。

new_response = requests.get('https://api.etilbudsavis.dk/v2/offers/search', params=new_body) 

參見the requests docs

+0

現在,我收到一個新的錯誤:「{」code「:1106,」id「:」00ilpnqbe2jeoxcnyejlh75vaho2c3jq「,」message「:」No Origin「,」deta ils「:」Missing origin header \ nThis token 「:空,」 @注1「:」不能沒有有效的產地^ h EADER「」以前的使用。嘿,它看起來就像你發現了一個錯誤如果你 有這個錯誤的任何問題,請隨時聯繫支持與ABOV E錯誤ID。「}' – DBE7

+1

看起來你需要簽署令牌之前,你可以使用它,請參閱[他們的文檔(http://docs.api.etilbudsavis.dk/docs/getting -started#API會話的簽名)。 –

+0

它說:「如果你的eTilbudsavis應用程序是由JavaScript在瀏覽器中不執行,您需要登錄您的令牌,然後才能開始發送請求不要簡單地增加一個Origin標!」。我不寫手機應用程序或類似的東西。我應該沒有簽約... – DBE7

0

我設法解決與丹尼爾·羅斯曼誰提醒我的事實,與在Python Shell中的API是打從瀏覽器的API交互不同的幫助的問題。該文檔明確指出,您必須簽署API令牌才能正常工作。我錯過了那些微小的細節......丹尼爾幫我把所有東西都弄清楚了。再次感謝丹。

相關問題