“塞维”ceAccountCredentials.from_json_keyfile_name'远程json的等效项

2024-04-18 08:46:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设置一个程序来帮助用户为一篇研究论文做笔记,现在我需要将client_secret.json与程序文件分开,以保证其在线安全。如何从json获取creds而不将其作为python程序的文件?在

scope = ["https://spreadsheets.google.com/feeds","https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
gs = gspread.authorize(creds)

在上面的代码中,有没有什么方法可以使用json响应而不是客户端_secret.json文件归档更像:

^{pr2}$

Tags: 文件用户https程序comclientjsonsecret
1条回答
网友
1楼 · 发布于 2024-04-18 08:46:28

最好的方法是将秘密JSON的密钥创建为环境变量,并使用一个函数返回与JSON格式相同的dict,然后可以使用auth方法from_json_keyfile_dict

我是这样做的,我如何调用我的环境变量:

def create_keyfile_dict():
    variables_keys = {
        "type": os.environ.get("SHEET_TYPE"),
        "project_id": os.environ.get("SHEET_PROJECT_ID"),
        "private_key_id": os.environ.get("SHEET_PRIVATE_KEY_ID"),
        "private_key": os.environ.get("SHEET_PRIVATE_KEY"),
        "client_email": os.environ.get("SHEET_CLIENT_EMAIL"),
        "client_id": os.environ.get("SHEET_CLIENT_ID"),
        "auth_uri": os.environ.get("SHEET_AUTH_URI"),
        "token_uri": os.environ.get("SHEET_TOKEN_URI"),
        "auth_provider_x509_cert_url": os.environ.get("SHEET_AUTH_PROVIDER_X509_CERT_URL"),
        "client_x509_cert_url": os.environ.get("SHEET_CLIENT_X509_CERT_URL")
    }
    return variables_keys

# then the following should work

scope = ["https://spreadsheets.google.com/feeds","https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_dict(create_keyfile_dict(), scope)
gs = gspread.authorize(creds)


相关问题 更多 >