Как получить токен навсегда с помощью Oauth1?

Я продаю товары в Интернете через сайт, который я написал. Чтобы управлять потоком выполнения, я хочу, чтобы мое приложение автоматически создавало карточку на доске Trello при совершении покупки.

Мне удалось сделать все нормально, за исключением того, что через несколько минут токен, который я использовал, истекает, хотя я думал, что создал токен, срок действия которого никогда не истечет.

Я не могу вручную аутентифицироваться каждый раз, когда приходит заказ.

Вот код, который я написал для генерации токенов. (Oauth1).

Шаг 1 (один раз): получите вручную авторизованный ключ владельца ресурса, секрет владельца ресурса и верификатор.

import requests
from requests_oauthlib import OAuth1Session
oauth = OAuth1Session(CLIENT_KEY, client_secret=CLIENT_SECRET)
fetch_response = oauth.fetch_request_token(REQUEST_TOKEN_URL)
resource_owner_key = fetch_response.get('oauth_token')
resource_owner_secret = fetch_response.get('oauth_token_secret')

print(f'resource_owner_key: {resource_owner_key}')
print(f'resource_owner_secret: {resource_owner_secret}')
auth_url = oauth.authorization_url(AUTHORIZE_TOKEN_URL, scope='read,write', expiration='never') # expiration never
print(auth_url)
# Now manually authenticate in browser using this URL. Record resource owner key, secret and verifier

Шаг 2 (каждый раз): используйте ключ владельца ресурса, секрет владельца ресурса и верификатор, чтобы сгенерировать токен.

oauth = OAuth1Session(CLIENT_KEY,
client_secret=CLIENT_SECRET,
resource_owner_key=RESOURCE_OWNER_KEY,
resource_owner_secret=RESOURCE_OWNER_SECRET,
verifier=VERIFIER)
oauth_tokens = oauth.fetch_access_token(ACCESS_TOKEN_URL)
token = oauth_tokens.get('oauth_token')

Шаг 3: Используйте токен в запросе POST для создания карты.

Все это отлично работает в течение нескольких минут, а затем, пытаясь использовать его снова, я получаю сообщение об ошибке:

requests_oauthlib.oauth1_session.TokenRequestDenied: Token request failed with code 500, response was 'token not found'.

Я думал, этот токен вечен? Я все еще могу видеть в своей учетной записи Trello:

read and write access on all your boards
read and write access on all your teams
Approved: today at 6:30 AM
Never Expires

2 ответа

Решение

Решено - я все делал правильно, просто шаг 2 нужно делать только один раз, а не каждый раз. Я думал, что мне нужно генерировать новый токен для каждого нового запроса, но токен, сгенерированный в строке 'token = ', на самом деле хорошо сохранить и использовать вечно.

Установите время истечения срока действия в токене, например, истекает в 2099 году что-то в этом роде

Другие вопросы по тегам