pygsheets - использование dotenv вместо файла json - PullRequest
0 голосов
/ 31 октября 2019

Подключение к gsheets: обычным способом было бы запустить gc = pygsheets.authorize() с файлом creds.json в той же корневой папке, что и скрипт gsheets.py (структура папки ниже)

├── creds.json
├── gsheets.py

Хотелось быиспользовать service_account_env_var вместо использования файла json

Файл creds.json выглядит примерно так:

{
    "token": null, 
    "refresh_token": "token", 
    "id_token": null, 
    "token_uri": "token_uri", 
    "client_id": "client_id.apps.googleusercontent.com", 
    "client_secret": "secret"
}

Как создать файл .env с учетными данными в jsonфайл ?

Согласно документации Pygsheets: pygsheets - Переменные среды

Предполагается, что вы установили ключ переменной среды GDRIVE_API_CREDENTIALS, установленный со значением учетной записи службы. Файл json, описанный в приведенном выше разделе «Учетная запись службы».

К сожалению, не было указаний относительно того, как можно установить переменную среды. Я думал о том, чтобы:

Создать файл .env (я действительно не уверен, как выразить json в формате файла env, поэтому оборачиваем отдельные пары ключ: значение в {} ...):

# .env
GDRIVE_API_CREDENTIALS = {
token = null
refresh_token = token
id_token = null
token_uri = token_uri
client_id = client_id.apps.googleusercontent.com
client_secret = secret }

Создание settings.py:

# settings.py

from dotenv import load_dotenv
load_dotenv()

import os
creds = os.getenv('GDRIVE_API_CREDENTIALS')

pygsheets.authorize(service_account_env_var = creds)

Конечным результатом будет успешное соединение, когда кредиты будут предоставлены в виде аргумента service_account_env_var

1 Ответ

1 голос
/ 31 октября 2019

Если вы посмотрите на код pygsheets, вы увидите, что он использует json.loads. Так что в вашем случае просто сохраните весь json-файл в виде строки в переменной env.

Также обратите внимание, что этот параметр предназначен для служебного файла, ваш файл выглядит как учетные данные пользователя.

Редактировать: Если вы завершили поток аутентификации, вы можете использовать сгенерированный файл токена непосредственно как json и создать учетные данные из него. Прямой опции для этого нет, вам придется создать из нее объект учетных данных. https://github.com/nithinmurali/pygsheets/blob/staging/pygsheets/authorization.py#L37 см. Этот код для справки.

PS. Путешествие сейчас, будет обновлять, чтобы включить пример кода.

...