2

J'essaie de travailler avec Google Fusion Table en utilisant OAuth 2.0 pour serveur à serveur (à deux pattes) par le code suivant:ne peut pas insérer dans Google Fusion Tables par deux pattes OAuth en Python

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() 

tout est OK quand je lis de la table, mais lorsque je tente d'insérer des données:

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

J'ai eu l'erreur:

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"> 

Question: est-ce que quelqu'un sait ce que je fais de mal à implémenter l'insertion dans Google Fusion Table?

UPD:

Constaté que oauth2client est dépréciée, a essayé de faire une requête par google.auth et demandes comme il est décrit dans le docs:

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, 
}) 

Comme l'aperçu, je me suis même résultat: succès sur SELECT et 403 sur INSÉRER.

Merci.

Répondre

0

Les moyens achetés sont justes et pratiques. La raison en était que j'ai besoin d'ajouter la permission d'accéder à la table dans le site.

Ajoutez cette autorisation par courrier électronique, que vous pouvez obtenir à partir du fichier de données d'identification.