Como criar um painel do BigQuery usando o tutorial do Codelab

Eu estou completando o tutorial inicial dehttps://developers.google.com/bigquery/articles/dashboard

Estou no estágio "Criando o painel", mas quando executo o programa por meio do mecanismo do Google Search, posso fazer login. O painel de controle pede minha permissão para gerenciar meus dados usando o BigQuery (publicaria uma captura de tela, mas meu representante está muito baixo ). Quando eu aceito isso, só me leva a uma página em branco. No entanto, o código do main.py sugere que ele deve imprimir na página "Hello Dash! Last mod time = alguns números".

Curiosamente, quando implantei este programa usando o mecanismo do Google app, um erro: redirect_uri_mismatch é exibido. Agora, antes de perguntar se meu redirecionamento é o mesmo no console do Google Apps, ele é definido como http: // localhost: 8080 / oauth2callback e é exatamente o mesmo em minha referência de código client_secrets.json. << Isso foi corrigido, depois de alterar o ID do cliente no console do Google que ele agora carrega, no entanto, ainda recebo a tela em branco quando deveria estar mostrando o "hello dash!" da linha de resposta de gravação em main.py

Referi-me aErro de obtenção: redirect_uri_mismatch O URI de redirecionamento no pedido: http: // localhost: 8080 / oauth2callback não corresponde a um URI de redirecionamento registrado esta pergunta link que é muito semelhante, mas nenhuma das respostas são satisfatórias. Eu tentei todos eles.

main.py

from bqclient import BigQueryClient
import os
import httplib2

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
#from apiclient.discovery import build
from oauth2client.appengine import oauth2decorator_from_clientsecrets
from google.appengine.api import memcache

# Project ID for project to receive bill.
# During limited availability preview, there is no bill.
# The value should be your quoted Client ID number 
# which you previously recorded from code.google.com/apis/console

PROJECT_ID = "client_id"
DATASET = "samples"
TABLE = "natality"

# CLIENT_SECRETS, name of a file containing the OAuth 2.0
# information for this application.
CLIENT_SECRETS = os.path.join(os.path.dirname(__file__), 'client_secrets.json')

http = httplib2.Http(memcache)
decorator = oauth2decorator_from_clientsecrets(CLIENT_SECRETS,
    'https://www.googleapis.com/auth/bigquery')

bq = BigQueryClient(http, decorator)

class MainHandler(webapp.RequestHandler):
    @decorator.oauth_required
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write("""Hello dash!\n""")
        modTime = bq.getLastModTime(PROJECT_ID, DATASET, TABLE)
        if modTime is not None:
            msg = 'Last mod time = ' + modTime
        else:
            msg = "Could not find last modification time.\n"
        self.response.out.write(msg)

application = webapp.WSGIApplication([('/', MainHandler)], debug=True)

def main():
    run_wsgi_app(application)

if __name__ == '__main__':
    main()}

app.yaml

application: exalted-mode-398
version: 1
runtime: python27
api_version: 1
threadsafe: no


handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /oauth2callback
  script: oauth2client/appengine.py

- url: /.*
  script: main.py

client_secrets.json

{
 "web": {
   "client_id": "client_id",
   "client_secret": "secret_number",
   "redirect_uris": ["http://localhost:8080/oauth2callback"],
   "auth_uri": "https://accounts.google.com/o/oauth2/auth",
   "token_uri": "https://accounts.google.com/o/oauth2/token"
 }
}

Alguém tem alguma idéia porque estou recebendo esse erro ???

Também removi meu número secreto e client_id por razões óbvias

questionAnswers(0)

yourAnswerToTheQuestion