私はoauth2認証でリクエストセッションを使用しています。 小さなファイルをアップロードするとすべて正常に動作しますが、4GBファイルの場合、トークンの期限切れエラーが発生します。ファイルがアップロードされたように見えますが、クローズセッションのパートトークンがもう一度検証されます。ファイルがアップロードされる前にトークンが期限切れになりました
この状況を処理する機会はありますか? セッションが閉じられる前に、トークンをリフレッシュして大きなファイルをアップロードしますか?
コードのサンプルは以下のとおりです。ありがとうございました。乾杯!
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
はアップロードロジックのサーバー側を変更することができます使用するように持っているか、あなたはそれを制御することはできませんか? –
いいえ、サーバーへのアクセスはありません。APIエンドポイントのみ –