如何使用 Oauth1 获得永久令牌?
How to get a forever token using 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')
第三步:在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
在token中设置expiration long过期时间,比如2099年过期之类的
已解决 - 我做的一切都是对的,只是步骤 2 应该只做一次而不是每次都做。我以为我必须为每个新请求生成一个新令牌,但在 'token = ' 行生成的令牌实际上可以保存并永久使用。
我通过我编写的网站在线销售产品。为了管理我的履行流程,我希望我的应用在购买时自动在 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')
第三步:在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
在token中设置expiration long过期时间,比如2099年过期之类的
已解决 - 我做的一切都是对的,只是步骤 2 应该只做一次而不是每次都做。我以为我必须为每个新请求生成一个新令牌,但在 'token = ' 行生成的令牌实际上可以保存并永久使用。