Аутентифицированный API-доступ к Firebase через REST API

Это удивительно мучительно. Для нового Firebase + Python нет никакой документации. Поэтому я пытаюсь использовать REST API, для которого требуется особый тип аутентификации.

введите описание изображения здесь Как вы видите, они говорят, что это может быть секрет приложения (его нигде нет в новой консоли) или токен аутентификации< /strong> (что не задокументировано для python). Если я нажму Документация по аутентификации REST, я получу пример Java.

Я скачал файл JSON Key для сервисного аккаунта и попытался применить фрагменты кода, найденные в других местах, но, к сожалению, тщетно.

Может ли кто-нибудь дать подсказку о том, как поступить с этим?


person MeLight    schedule 06.07.2016    source источник


Ответы (1)


Вам необходимо сгенерировать токен доступа из файла ключа JSON сервисного аккаунта, используя Клиентская библиотека Google API Python, а затем добавьте ее в заголовки вашего запроса.

Вот пример того, как это сделать с запросами.

from oauth2client.service_account import ServiceAccountCredentials
import requests
import json
import httplib2

scopes = [
    'https://www.googleapis.com/auth/firebase',
    'https://www.googleapis.com/auth/userinfo.email',
    "https://www.googleapis.com/auth/cloud-platform"
]

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    '/pathto/json_file.json', scopes)

headers = {"content-type": "application/json; charset=UTF-8"}
headers['Authorization'] = 'Bearer ' + credentials.get_access_token().access_token

firebase_url = "https://docs-examples.firebaseio.com/rest/saving-data/fireblog/users/alanisawesome/name.json"

data = {
    "name": "Alan Turing",
    "birthday": "June 23, 1912"}

requests.put(firebase_url, headers=headers, data=json.dumps(data).encode("utf-8"))

Вы можете установить клиентскую библиотеку google python api, используя pip:

pip install --upgrade google-api-python-client
person atimothee    schedule 25.11.2016
comment
Я получаю сообщение об ошибке 403 «Отказано в доступе» при попытке доступа к базе данных Firebase. По документам должно работать. Мой вопрос здесь stackoverflow.com/questions/40810233. я ценю вашу помощь - person bibscy; 26.11.2016