Невозможно вставить в Google Fusion Tables с помощью двухстороннего OAuth в Python

Я пытаюсь работать с Google Fusion Table, используя OAuth 2.0 для сервера к серверу (двунаправленный) по следующему коду:

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

scopes = ['https://www.googleapis.com/auth/fusiontables']
credentials = ServiceAccountCredentials\
    .from_json_keyfile_name('***file-name***.json', scopes)
fusiontables = build('fusiontables', 'v2', credentials=credentials)

obj = fusiontables.query().sql(sql='select * from ***table-id***').execute()

Все хорошо, когда я читаю из таблицы, но когда я пытаюсь вставить некоторые данные:

obj = fusiontables.query().sql(
    sql="INSERT INTO ***table-id*** (Location, Number) VALUES('Paris', 1234)")\
    .execute()

Я получил ошибку:

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/fusiontables/v2/query?alt=json&sql=INSERT+INTO+***table-id***+%28Location%2C+Number%29+VALUES%28%27Paris%27%2C+1234%29 returned "Forbidden">

Вопрос: кто-то знает, что я делаю неправильно, чтобы осуществить вставку в Google Fusion Table?

UPD:

Обнаружил, что oauth2client устарел, попытался сделать запрос с помощью google.auth и Requests, как описано в документации:

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession

credentials = service_account.Credentials.from_service_account_file('***filename***.json')
if credentials.requires_scopes:
    credentials = credentials.with_scopes(scopes=['https://www.googleapis.com/auth/fusiontables'])

authed_session = AuthorizedSession(credentials)

r = authed_session.post('https://www.googleapis.com/fusiontables/v2/query', 
data={
    "sql": "***My SQL***",
    "hdrs": True,
    "typed": True,
})

В качестве предварительного просмотра я получил тот же результат: успех на SELECT и 403 на INSERT.

Благодарю.

1 ответ

Решение

Купленные способы являются правильными и работоспособными. Причина в том, что мне нужно добавить разрешение на доступ к таблице на сайте.

Добавьте это разрешение по электронной почте, которое вы можете получить из файла учетных данных.

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