gpt4 book ai didi

python - 在 Python 库中存储 OAuth token

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:43 25 4
gpt4 key购买 nike

我有一个 Python 服务,它导入一个与 PayPal API 对话的库。有一个配置文件被传递到库 __init__() 中,其中包含 PayPal API 用户名和密码。

使用用户名和密码调用 PayPal API token 端点将返回一个 token ,用于在付费调用期间进行身份验证。但是,此 token 持续 90 分钟,应重复使用。

此服务的多个实例在不同的服务器上运行,它们都需要共享这个 secret token 。

存储这 9 分钟 token 的最佳方式是什么?

最佳答案

虽然您可以将其保存在数据库中,但由于它的有效期仅为 90 分钟,您可以考虑使用内存中的数据存储,例如 Redis .设置起来非常简单,并且有各种Python clients available .

Redis 特别支持 setting a value 时的过期时间,因此您可以确保它只会保留一段固定的时间。当然,您仍然应该有异常处理,以防由于某种原因 key 提前失效。

虽然如果您还没有使用键值存储,这可能会引入软件依赖性,但从您的问题中并不清楚这个库是如何使用的,因此这是否是一个问题。

如果无法安装其他软件,您可以使用临时文件。但是,因为 Python 的 tempfile似乎不支持直接设置临时文件的名称,您可能需要手动处理文件管理。例如:

import os
import time
import tempfile


# 90 minutes in seconds. Setting this a little lower would
# probably be better to account for network latency.
MAX_AGE = 90 * 60
# /tmp/libname/ needs to exist for this to work; creating it
# if necessary shouldn't give you much trouble.
TOKEN_PATH = os.path.join(
tempfile.gettempdir(),
'libname',
'paypal.token',
)


def get_paypal_token():
token = None

if os.path.isfile(TOKEN_PATH):
token_age = time.time() - os.path.getmtime(TOKEN_PATH)

if token_age < MAX_AGE:
with open(TOKEN_PATH, 'r') as infile:
# You might consider a test API call to establish token validity here.
token = infile.read()

if not token:
# Get a token from the PayPal API and write it to TOKEN_PATH.
token = 'dummy'

with open(TOKEN_PATH, 'w') as outfile:
outfile.write(token)

return token

根据环境的不同,您可能希望研究限制对此临时文件的权限。但是,无论您如何保留 token ,此代码都应该是一个有用的示例。我不会对在文件系统上粘贴这样的东西感到兴奋,但如果您已经拥有用于在磁盘上请求 token 的 PayPal 凭据,那么将 token 写入临时存储可能不会有什么大不了的。

关于python - 在 Python 库中存储 OAuth token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212497/

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