Как засунуть client_secret и token в .env
У меня есть код из квикстарта по работе с API гугла
def auth() -> Credentials:
scopes = [
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets'
]
credentials = None
if os.path.exists('token.json'):
credentials = Credentials.from_authorized_user_file('token.json',
scopes)
if not credentials or not credentials.valid:
if credentials and credentials.expired and credentials.refresh_token:
credentials.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'client_secret.json', scopes)
credentials = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(credentials.to_json())
return credentials
Тут я получаю client_secret.json
и token.json
. Хотелось бы client_secret
и token
доставать из .env
файла и, что важно, сохранять в .env
файл. Проблема в том, что .from_authorized_user_file
принимает файл, а в .env
хранится словарь, типа client_secret={...}
.
Как мне переписать этот код, чтобы все работало через .env
?Встроенный метод .to_json()
или дамп словаря в json не работает, он жалуется на файл, что логично
То есть так, чтобы я, например, мог импортировать конфигурацию, типа from config import config
и передавать не файл, а сразу словарь config.token
или config.client_secret
.