Колба на GAE - Соединиться с Google API - Не могу использовать файл JSON

Я довольно плохо знаком с Flask, GAE и использованием API. Я пытаюсь создать базовое веб-приложение, которое может подключаться к одному из API Google.

Моя структура папок выглядит так (я сохранил ее для основных файлов):
приложение-webemotions:
-app.yaml
-main.py
-lib
--sentimentanalysis.py
-static
--credential.json

Все работает, кроме предоставления файла JSON для учетных данных. Насколько я понимаю, есть несколько способов сделать это:
1) Настройка переменной среды GOOGLE_APPLICATION_CREDENTIALS для места назначения моего файла в app.yaml
2) Запрос файла через мой скрипт (sentimentanalysis.py)

К сожалению, я не смог сделать ни одну из этих работ.

Опция 1):
В app.yaml у меня есть строка:

env_variables:
   GOOGLE_APPLICATION_CREDENTIALS: static/key/credentials.json

Затем я запускаю свой код через dev_appserver.py . и получите следующую ошибку:

ApplicationDefaultCredentialsError: File static/key/credentials.json (pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist!

Вариант 2): у меня есть строка кода в моем скрипте sentimentanalysis.py:

  scope = ['https://www.googleapis.com/auth/cloud-platform']
  credentials = ServiceAccountCredentials.from_json_keyfile_name('/static/credentials.json', scope)

И при запуске кода я получаю следующую ошибку:

    raise IOError(errno.EACCES, 'file not accessible', filename)
IOError: [Errno 13] file not accessible: '/static/credentials.json'
INFO     2016-08-06 04:10:51,678 module.py:788] default: "POST /Sentiment-analysis HTTP/1.1" 500 -

Вопрос:
Таким образом, похоже, что независимо от метода, который я использую, я не могу предоставить правильный путь к файлу JSON

Мой вопрос заключается в том, чтобы сначала узнать, является ли какой-либо из перечисленных выше вариантов правильным, и если да, что я делаю неправильно? Если они не являются правильными вариантами, что бы вы порекомендовали?

Извиняюсь, если об этом уже спрашивали, я пытался найти ответ в течение нескольких часов и не смог его взломать...

Спасибо!

2 ответа

Решение

Если вы работаете в Google App Engine, ваш код автоматически получает необходимые учетные данные. Не устанавливайте GOOGLE_APPLICATION_CREDENTIALS и не вызывайте.from_json_keyfile_name. Вместо этого позвоните:

credentials = GoogleCredentials.get_application_default()

Как показано здесь: https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/bigquery/api/getting_started.py

set GOOGLE_APPLICATION_CREDENTIALS=credentials.json используйте эту команду, если вы используете cmd

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