如何在API(Python)上存储更多请求的access_token

时间:2017-06-13 09:39:48

标签: python api python-requests access-token

我通过Python的'requests'-module发出API请求。我收到了access_token,这是一个Bearer令牌。 我把令牌放到这样的变量中:

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

对于需要此access_token的以下GET请求,我需要此结构。每次我发出新的GET请求时,我都不想获得新的令牌。

我在找到如何:

方面遇到了问题

1:存储access_token

2:检查access_token是否有效

3:使用此令牌在我的API上发出其他GET请求。

我非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我的回答:

我已将POST请求的整个输出放入变量result。 我的令牌的结构必须是这样的:“Bearer tokenstring”。 所以我将类型放入变量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)

这对我来说是最好的,在这里。