Authomatic: python библиотека для аутентификации и авторизации / Хабр

Build ресурса для доступа к google sheets api на python

В google-api-python-client есть универсальный метод googleapiclient.discovery.build , который создает ресурс для работы с любым API Google и с Sheets API в частности. Но сначала нужно куда то в проекте сложить json файл токена доступа сервисного аккаунта.

build у меня в проекте выглядит вот так:

Доступ к google api

Чтобы писать из кода в Google Sheet нам нужен доступ к Google Sheets API, которое входит в библиотеку API Google Cloud Platform. Для этого нужно:

  1. нужно создать проект в Google Cloud Platform

  2. подключить к проекту в Google Cloud Platform Sheets API

  3. заполнить OAuth consent screen ( пользовательское соглашение )

  4. создать либо OAuth Client ID, либо Service Account

  5. я использую Сервисный Аккаунт, следовательно мне нужно дать сервисному аккаунту доступ к Google Sheet (электронной таблице) с уровнем Редактор, тогда я смогу писать из кода в эту таблицу

  6. получить JSON файл с токеном доступа к сервисному аккаунту и положить его куда-то откуда код сможет его читать

В тексте это выглядит просто, однако в первый раз интерфейс Google Cloud Console выглядит как рубка звездолета. Куда жать не понятно, иные операции нельзя отменить, а некоторые важные данные можно получить только сразу после нажатия на кнопку и никак после (например json файл токена доступа сервисного доступа). Поэтому страаашно!!!

В первый раз мне пришлось закрыть ЭТО и пойти подышать....
В первый раз мне пришлось закрыть ЭТО и пойти подышать….

Но разобраться можно, попробуйте. А если не получится, то вот Пост только про токены Google Cloud.

Зависимости для доступа к sheets api из python

Мой req.txt выглядит вот так:

Инициация базового объекта authomatic

Происходит очень просто, с указаним конфигурационных данных и секретной строки:

from authomatic import Authomatic
from config import OAUTH_CONFIG 
authomatic = Authomatic(OAUTH_CONFIG, ‘very secret string', report_errors=False)

Как дать доступ к таблице сервисному аккаунту

Просто беру емейл сервисного аккаунта и расшариваю доступ к электронной таблице Google Sheets, как если бы это был емейл гуглоаккаунта любого другого живого человека. И этому доступу нужно выдать права Редактора, чтобы с Сервисным аккаунтом писать в этот Google Sheet. На стороне Google Cloud ничего дополнительно делать не надо.

Уведомлять Сервисный Аккаунт тоже не обязательно – он же робот, вы чего 😉

Как писать в google sheet с api на python?

Для записи есть 3 метода:

Данные для всех этих методов передаются в аргументе body. Для append / update структура одинакова:

Как узнать spreadsheet_id google sheet

Чтобы писать в электронную таблицу, нужно знать её идентификатор. Также нам может понадобиться (при форматировании уж точно) идентификатор листа в электронной таблице. В браузере это все выглядит просто:

Как читать из google sheet с api на python?

Для чтения у нас есть два метода spreadsheets().values().get() и spreadsheets().values().batchGet() . В аргументы им передается идентификатор электронной таблицы Google Sheet и диапазон для чтения.

Диапазон для чтения – это строка вида “Лист!A1:Z999”. Диапазоны, как видно, могут быть на разных листах электронной таблицы.

batchGet в отличии от get может запросить сразу, за один execute(), несколько диапазонов данных, что экономит квоты. Рекомендую сразу и везде использовать только батчевые методы.

resp = get_service_sacc().spreadsheets().values().get(spreadsheetId=sheet_id, range="Популярное!A1:A999").execute()
# resp = get_service_sacc().spreadsheets().values().batchGet(spreadsheetId=sheet_id, ranges=["Популярное", "Лист3"]).execute()

Запрос отправляется (и расходуются квоты) только по методу execute().

В ответ мы получаем json (dict), где все очевидно. В поле values двумерный массив с нужными данными.

Лимиты google sheets api

Google почти ко всем своим API доступ выдает БЕСПЛАТНО и без премодерации (в тестовом режиме). Однако ограничивает. К некоторым апи ограничения сильные, а к Sheets API вполне приемлемые.

Определение конфигурации oauth провайдеров


В стандартный конфигурационный файл flask-приложения нужно добавить словарь содержащий параметры всех провайдеров:

Регистрация приложения

У каждого провайдера свои особенности регистрации. Адреса регистрации приложения

Создание представления

Осталось создать представление, которое:

Похожее:  ГДЕ НАЙТИ ЛИЧНЫЙ КАБИНЕТ ДЛЯ ВХОДА LK IDS BY ЧАСТНЫЙ КАБИНЕТ ВХОД

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *