5

J'ai suivi les instructions dans https://developers.google.com/bigquery/authorization#service-accounts-appengine pour faire des requêtes depuis le moteur de l'application vers bigquery.Autorisation Google App Engine pour Google BigQuery

Dans l'étape 2, je clique sur Équipe dans la console Google Api et redirige vers App Engine> Administration> Autorisations. J'ajoute le nom du compte de service en tant qu'Email et en tant que développeur de rôle (l'option "peut modifier" n'est pas disponible), puis cliquez sur "Inviter l'utilisateur". Après cela, apparaît un message: "Un e-mail a été envoyé à [email protected] pour vérification." et le statut est En attente. Comment je pourrais confirmer l'e-mail ?, semble qu'il y ait un bug ici ...

Ensuite, j'ai fait un test en utilisant le code suivant:

#!/usr/bin/env python 
import httplib2 
import webapp2 
from google.appengine.api import memcache 
from apiclient.discovery import build 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
from oauth2client.appengine import AppAssertionCredentials 

# BigQuery API Settings 
PROJECT_NUMBER  = 'XXXXXXXX' 

credentials = AppAssertionCredentials(scope='https://www.googleapis.com/auth/bigquery') 
http  = credentials.authorize(httplib2.Http(memcache)) 
service  = build("bigquery", "v2", http=http) 

class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     query  = {'query':'SELECT word,count(word) AS count FROM publicdata:samples.shakespeare GROUP BY word;', 
        'timeoutMs':10000} 
     jobRunner = service.jobs() 
     reply  = jobRunner.query(projectId=PROJECT_NUMBER,body=query).execute() 
     self.response.out.write(reply) 

app = webapp2.WSGIApplication([ 
    ('/', MainHandler) 
], debug=True) 

Et la réponse a été (en cours d'exécution de google):

HttpError: <HttpError 403 when requesting https://www.googleapis.com/bigquery/v2/projects/XXXXXXXX/queries?alt=json returned "Access Denied: Job YYYYYYYY:job_e57bdde0144c495dbc864ccbfb82b704: RUN_QUERY_JOB"> 

Si je test de localhost, la réponse est:

HttpError: <HttpError 401 when requesting https://www.googleapis.com/bigquery/v2/projects/XXXXXXXX/queries?alt=json returned "Invalid Credentials"> 

Quelqu'un pourrait me aider? :-)

+0

Ce code fonctionne parfaitement pour moi (quand je remplace 'XXX ..' par l'identifiant du projet BigQuery, une chaîne dans mon cas), donc c'est un problème d'authentification. Btw, AppAssertionCredentials ne fonctionnera pas sur localhost. Avez-vous l'API BigQuery sur https://code.google.com/apis/console/#project:ZZZ:services (avec ZZZ comme numéro de projet API)? –

+0

Oui, BigQuery est activé – Christian

+0

Si vous utilisez App Engine, consultez la page https://appengine.google.com/settings?&app_id=s~your-appengine-project-name. Voir un lien sous "Numéro de projet de la console API Google:"? Cliquez dessus, et assurez-vous que le projet a l'API BigQuery. –

Répondre

10

Vous pouvez ajouter [email protected] au projet au http://cloud.google.com/console.

Attendez-vous à ce que ce soit plus facile/plus simple bientôt!


étape par étape, par @Christian:

  1. Aller à App Engine Dashboard de votre application, cliquez sur Paramètres de l'application et copiez le nom du compte de service ([email protected])
  2. Aller à http://cloud.google.com/console
  3. Sélectionnez votre projet
  4. Cliquez sur l'icône de vitesse et sélectionnez Équipes
  5. Cliquez sur Ajouter un membre
  6. Collez le nom du compte de service et sélectionnez l'autorisation de modification, puis cliquez sur Ajouter.
  7. Amusez-vous!
2

Actuellement, il existe deux zones d'où vous pouvez ajouter un compte. Si vous utilisez l'ancienne console code.google.com/api/console, cela vous amènera à votre tableau de bord appengine.google.com i.e "Way-1" qui présente en fait un problème de demande de "vérification". Le nouveau https://cloud.google.com/console a résolu ce problème.

« Si vous avez déjà ajouté votre compte via Way-1 Suivez ci-dessous la méthode »

« Way-1 » semble avoir un problème en raison de ce votre compte continue à afficher « En attente Etat ». Si d'une façon ou d'une autre vous avez ajouté le compte via Way-1 et essayez de suivre "Way-2" après, vous continuerez à voir le même statut sur le lien way-2. Pour cela, vous devrez supprimer cet utilisateur avec "supprimer l'icône" qui apparaît sur le pointeur de la souris. Supprimez le compte à partir de là et ajoutez [email protected] avec Autorisation "Can Edit".