如何在API(Python)上存储更多请求的访问令牌

如何在API(Python)上存储更多请求的访问令牌,python,api,python-requests,access-token,Python,Api,Python Requests,Access Token,我通过Python的“请求”模块发出API请求。我正在获取访问令牌,这是一种承载令牌。 我将令牌放入如下变量: def get_token(): url = 'https://myapiurl.com/oauth/token' payload = {'username':'myusername', 'password':'mypassword'} headers = {'Content-Type': 'application/json', 'origin': 'https

我通过Python的“请求”模块发出API请求。我正在获取访问令牌,这是一种承载令牌。 我将令牌放入如下变量:

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请求,其中需要此访问令牌。我不想每次发出新的get请求时都获得新令牌

我在了解如何:

1:存储访问令牌

2:检查访问令牌是否有效

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

非常感谢您的建议。

我的回答:

我已将POST请求的全部输出放入变量
result
。 我的令牌的结构必须是这样的:“承载令牌字符串”。 因此,我将类型放入变量
result\u tokentype
,将令牌字符串放入变量
result\u 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)

这对我来说效果最好。

一个解决方案是将access_令牌保存在一个全局变量中(如果您不使用任何数据库),然后与所有get请求一起使用,直到过期。到期时,当发出请求时,它会给您相应的错误,在收到此错误时,再次调用“get_token()”函数以获取新的令牌。是的,这很有帮助,谢谢。将令牌存储在全局变量
complete\u-token
result\u-accesstoken=result[“access\u-token”]result\u-tokentype=result[“token\u-type”]complete\u-token=str(result\u-token)+“”+str(result\u-accesstoken)
将变量用作参数值:
头={“Authorization”:complete\u-token,“X-User-Groups”:“app\u-create”,“内容类型”:“application/json”}
我现在可以使用此令牌发出其他GET请求。您知道如何检查请求是否有效(以及可能需要哪个模块)吗?提出请求并检查响应,这几乎就是全部内容。使用Graph API Explorer探索您可以从API中获得的所有内容。阅读FB API文档。