2017-06-13 45 views
0

我通過Python的「requests'模塊進行API請求。我正在獲取access_token,這是一個不記名令牌。 我已經把令牌到一個變量是這樣的:如何存儲爲的access_token對API的更多請求(Python)的

def get_token(): 
    url = 'https://myapiurl.com/oauth/token' 
    payload = {'username':'myusername', 'password':'mypassword'} 
    headers = {'Content-Type': 'application/json', 'origin': 'https://blabla.com'} 
    r = requests.post(url, data=json.dumps(payload),headers=headers) 
    mytoken = r.json()['token_type'] 
    mytokentype = r.json()['access_token'] 
    token_param = str(mytoken) + ' ' + str(mytokentype) 
    return token_param 

輸出是具有這種結構的字符串:

Bearer eyJ0eXAiOiJKV1QiLCJhb.....0sImF6cCI6ImVCOEdI 

我需要這個結構以下GET請求,其中這是的access_token需要。每次我發出新的GET請求時,我都不想獲得新的令牌。

我在尋找如何來的問題:

1:存儲一個的access_token

2:檢查的access_token有效

3:使用此標記使其他GET請求我的API。

我的任何意見非常感謝。

+0

一個解決方案是保存在的access_token一個全局變量(如果你不使用任何數據庫),然後直到它過期您所有的GET請求使用它。在到期時,當發出請求時,它會給你相應的錯誤,在得到這個錯誤時再次調用'get_token()'函數來獲得新的令牌。 –

+0

是的,幫助,謝謝。 存儲令牌全局變量'complete_token': 'result_accesstoken =導致[ 「的access_token」] result_tokentype =結果[ 「token_type」] complete_token = STR(result_tokentype)+ 「」 + STR(result_accesstoken)' 使用可變作爲參數值: '頭= { 「授權」:complete_token, 「X-用戶組」: 「app_create」, 「內容類型」: 「應用/ JSON」}' 我現在可以使用此標記進行其他GET請求。 你有一個想法如何檢查,如果該請求是有效的(和模塊可能需要)? –

+0

發出請求並檢查響應,這幾乎全是它。使用圖形API資源管理器來探索你可以從API獲得什麼。閱讀FB API文檔。 –

回答

0

我的回答:

我已經把我的POST請求的全部輸出到變量result。 我的令牌的結構必須如下所示:「持票人令牌字符串」。 所以我把類型爲變量result_tokentype和令牌串入變量result_accesstoken。 最後,我把它們一起放入變量accessToken

result_tokentype = result["token_type"] 
result_accesstoken = result["access_token"] 
accessToken = str(result_tokentype) + " " + str(result_accesstoken) 

現在,我在正確的結構完整的字符串,我可以用這個變量下一個請求,例如:

url = "https://myurl.com" 
headers = {"Authorization": accessToken, "key1": "value1", "Content-Type": "application/json" } 
conn.request("GET", url, headers=headers) 

這在這裏爲我工作最好。

相關問題