Как использовать строку JSON в качестве учетных данных вместо пути к файлу для Python с Google API

Я ищу способ создать объект Google Credentials и получить доступ к моей электронной таблице Google Sheets без необходимости ссылаться на другой файл, содержащий мои данные client_secret.json. Похоже, это должно быть довольно легко сделать, я просто хочу иметь возможность скопировать JSON в свой скрипт python и получить к нему доступ таким образом, но я не смог найти способ сделать это.

Согласно https://oauth2client.readthedocs.io/en/latest/source/oauth2client.file.html кажется, что единственный способ использовать текущий метод - это путь к файлу, но опять же, если файл буквально содержит только JSON, кажется, что должен быть способ просто поместить JSON в мой скрипт python и использовать его из там.

Ниже показано, как я в настоящее время получаю значения из моего файла json.

SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('sheets', 'v4', http=creds.authorize(Http()))

SPREADSHEET_ID = ID
RANGE_NAME = sheetName + '!A2:D'
result = service.spreadsheets().values().get(spreadsheetId=SPREADSHEET_ID,
                                             range=RANGE_NAME).execute()

Я немного сбит с толку, но если вы хотите сохранить свои кредиты в сценарии, вы, вероятно, можете просто сделать с ними диктовку.

SuperStew 11.07.2018 23:06

Если вы откажетесь от пакета устаревший oauth2client и перейдете к пакетам google-auth / google-auth-oauth, вы можете использовать метод Flow.from_client_config с вашим dict информации из файла client_secrets.

tehhowch 11.07.2018 23:25
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
1 132
1

Ответы 1

Изменил мой код на это:

SCOPES = 'https://www.googleapis.com/auth/spreadsheets'
store = file.Storage('credentials.json')

flow = client.OAuth2WebServerFlow(client_id='619103408544-qbpfk38g9jk4tkc5gshvds9hs8g5ur9o.apps.googleusercontent.com',
                                    client_secret='faJQr2Wd3x25_yKYIWslxR4s',
                                    scope=SCOPES)
creds = tools.run_flow(flow, store)
service = build('sheets', 'v4', http=creds.authorize(Http()))

При использовании другой функции для создания потока оказалось, что вам не нужно фактически использовать хранилище для создания учетных данных, поэтому я просто удалил строку store.get ().

Спасибо за совет, я обновлю свой пост определенно новым для этого сайта.

user7812593 12.07.2018 20:20

Другие вопросы по теме