Как аутентифицировать API Google (API Google Диска) из Google Compute Engine и локально, не загружая учетные данные учетPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как аутентифицировать API Google (API Google Диска) из Google Compute Engine и локально, не загружая учетные данные учет

Сообщение Anonymous »

Наша компания работает над обработкой данных из Google Таблиц (внутри Google Диска) с помощью Google Cloud Platform, и у нас возникли некоторые проблемы с аутентификацией.
Мы работаем в двух разных местах. необходимо запускать код, который выполняет вызовы API к Google Диску: в рабочей среде Google Compute Engine и в средах разработки, т. е. локально на ноутбуках наших разработчиков.
Наша компания довольно строго относится к учетным данным и не позволяет загружать учетные данные учетной записи службы Ключи JSON (это лучший метод и обеспечивает более высокий уровень безопасности). По-видимому, во всех документах GCP говорится, что нужно просто загрузить ключ JSON для учетной записи службы и использовать его. Или в документах Google API/разработчиков говорится, что нужно создать идентификатор клиента OAuth2 и загрузить его ключ, как здесь.

Они часто используют такой код:

Код: Выделить всё

from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/sqlservice.admin']
SERVICE_ACCOUNT_FILE = '/path/to/service.json'

credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
Но мы не можем (или просто не хотим) загружать JSON-ключи нашего сервисного аккаунта, поэтому мы застряли, если просто следуем документации.
Для среды Google Compute Engine мы смогли выполнить аутентификацию с помощью учетных данных приложения GCP по умолчанию (ADC), т. е. не указывая явным образом учетные данные для использования в коде и позволяя клиентским библиотекам «просто работать» — это прекрасно работает, поскольку до тех пор, пока человек гарантирует, что Виртуальная машина создается с правильными областями https://www.googleapis.com/auth/drive, а электронная почта учетной записи службы вычислений по умолчанию получает разрешение на доступ к листу, к которому необходимо получить доступ - это описано в документации. здесь. Вы можете сделать это так;

Код: Выделить всё

from googleapiclient.discovery import build
service = build('sheets', 'v4')
SPREADSHEET_ID=""
RANGE_NAME="A1:A2"
s = service.spreadsheets().values().get(
spreadsheetId=SPREADSHEET_ID,
range=RANGE_NAME, majorDimension="COLUMNS"
).execute()

Однако как нам сделать это для разработки, то есть локально на ноутбуках наших разработчиков? Опять же, без загрузки каких-либо ключей JSON и желательно с максимально «просто работающим» подходом?
Обычно мы используем вход в приложение по умолчанию с использованием gcloud auth для создания учетных данных приложения по умолчанию, которые клиентские библиотеки Google используют те, которые «просто работают», например, для Google Storage. Однако это не работает для API Google за пределами GCP, например, для Google Drive API service = build('sheets', 'v4'), который завершается с ошибкой: «Запрос имел недостаточные области аутентификации». Затем мы попробовали всевозможные решения, например:

Код: Выделить всё

credentials, project_id = google.auth.default(scopes=["https://www.googleapis.com/auth/drive"])
и

Код: Выделить всё

credentials, project_id = google.auth.default()
credentials = google_auth_oauthlib.get_user_credentials(
["https://www.googleapis.com/auth/drive"], credentials._client_id, credentials._client_secret)
)
и многое другое...
Все это приводит к множеству ошибок/проблем, которые мы не можем преодолеть при попытке выполнить аутентификацию в Google Drive API :(
Есть мысли?

Подробнее здесь: https://stackoverflow.com/questions/635 ... -engine-an
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»