gpt4 book ai didi

python-2.7 - token 在文件上传前过期

转载 作者:行者123 更新时间:2023-12-04 02:04:09 25 4
gpt4 key购买 nike

我正在使用带有 oauth2 身份验证的请求 session 。
当我上传小文件时一切正常,但对于 4GB 文件,我收到 token 过期错误,看起来文件已上传但在结束 session 部分 token 再次得到验证。

有没有机会处理这种情况?
在 session 关闭之前使用刷新的 token 上传大文件或其他什么?

代码示例如下,非常感谢您的帮助。干杯!

import requests
from io import StringIO

from requests_toolbelt.multipart.encoder import MultipartEncoder


TOKEN_PAYLOAD = {
'grant_type': 'password',
'client_id': '###',
'client_secret': '###',
'username': '###',
'password': '####'
}


def get_token():
response = requests.post(
'https://oauth/token',
params=TOKEN_PAYLOAD)
response_data = response.json()
token = response_data.get('access_token')
return token


# Create test file
MB = 1024 ** 2
GB = MB * 1024

encoded_string = 'x' * 4 * GB
file_test = StringIO()
file_test.write(encoded_string)

# Get token
token = get_token()

# Create form
multipart_data = MultipartEncoder(
fields={
'--': ('4GB_test.txt', file_test, 'text/plain'),
'id': '2217',
'fileFieldDefId': '4258',
}
)

# Create headers
headers = {
"Authorization": "Bearer {}".format(token),
'Content-Type': multipart_data.content_type
}

session = requests.Session()

response = session.post(
'https://oauth2/rest/external/item/multipartUpdate/byId',
headers=headers,
data=multipart_data,
)

print(response)
# <Response [401]>

print(response.content)
# b'{"error":"invalid_token","error_description":"Access token expired: 0f7f6bd9-4e21-407f-4a78347711a9"}'


# response.close() ? with refreshed token
# session.close() ? with refreshed token

最佳答案

如果您想拥有更多时间的有效访问 token ,您还可以请求刷新 token ,并在旧 token 过期时使用它们生成新的访问 token 。通常访问 token 的有效期为 1 小时,您可以维护一个计时器,并在每次计时器达到 60 分钟时生成一个新的访问 token 。这样你就可以有一个有效的访问 token 来进行更长的 session 。
您必须使用 grant_type=refresh_token https://www.rfc-editor.org/rfc/rfc6749#section-6

关于python-2.7 - token 在文件上传前过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45370652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com