Пример учетной записи службы Python Google Drive API
Можно ли аутентифицироваться с помощью API Google Диска, используя учетную запись службы Google, а не поток OAuth?
Примеры Python для Google Drive используют OAuth - Google Drive Python Quick start
Однако я не могу найти примеры учетных записей служб.
Однако большинство других API Google, которые я использую (Translate, Cloud Vision), действительно используют учетную запись службы, поэтому я хотел бы отказаться от кода OAuth для Google Диска для согласованности.
2 ответа
Лучший пример сервисного аккаунта на Python, о котором я знаю, - это пример Google Analytics.
Должно получиться примерно так.
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
SCOPES = ['https://www.googleapis.com/auth/drive.readonly']
KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'
def initialize_drive():
"""Initializes an service object.
Returns:
An authorized service object.
"""
creds = ServiceAccountCredentials.from_json_keyfile_name(
KEY_FILE_LOCATION, SCOPES)
# Build the service object.
service = build('drive', 'v3', credentials=creds)
return service
После того, как у вас будет служба накопителя, вы сможете использовать остальную часть кода из другого руководства. Это просто метод аутентификации, который отличается.
Просто не забудьте создать учетные данные сервисной учетной записи, а не учетные данные Oauth.
Вы можете использовать объект Credentials oauth2, используя следующее:
import json
from google.oauth2.service_account import Credentials
SCOPES = ['https://www.googleapis.com/auth/drive']
service_account_info = json.load(open('service_account.json'))
creds=Credentials.from_service_account_info(
service_account_info, scopes=SCOPES)
drive_service = build('drive', 'v3', credentials=creds)