Сертификат учетных данных Firebase Admin SDK не проверяется
После создания чат-бота в Dialogflow я хочу подключить его к моей среде PyCharm. Моя конечная цель - создать графический интерфейс в Python и позволить ему подключаться через серверную часть Dialogflow, у меня также есть база данных Firestore и несколько настроек API.
Я прочитал, чтобы подключить PyCharm к Dialogflow (и платформе Google Cloud), мне нужно использовать Firebase-Admin SDK, который был установлен через PIP.
import dialogflow_v2beta1
from google.cloud import firestore
import firebase_admin
from firebase_admin import credentials
#Initialize the Admin SDK
cred = credentials.Certificate('C:Users\folder1\folder2\chatbot.json')
default_app = firebase_admin.initialize_app(cred)
#The below is a default test hoping to write a new document to the Firestore Database to check the connection works.
doc_ref = db.collection(u'users').document(u'alovelace')
doc_ref.set({
u'first': u'Ada',
u'last': u'Lovelace',
u'born': 1815
})
Итак, с учетом вышесказанного я просто надеюсь подключить свою среду к моему чат-боту через платформу Google, и когда я запускаю этот код, я надеюсь, что некоторые данные будут созданы в моей базе данных Firestore.
Ошибка, которую я получаю при запуске выше:
C:\Users\Me\PycharmProjects\Chatbot\venv\Scripts\python.exe C:/Users/Me/PycharmProjects/Chatbot/venv/Chatbot.py
Traceback (most recent call last):
File "C:/Users/Me/PycharmProjects/Chatbot/venv/Chatbot.py", line 12, in <module>
cred = credentials.Certificate('C:Users\folder1\folder2\chatbot.json')
File "C:\Users\Me\PycharmProjects\Chatbot\venv\lib\site-packages\firebase_admin\credentials.py", line 83, in __init__
with open(cert) as json_file:
IOError: [Errno 2] No such file or directory: 'C:Users\\folder1\\folder2\\chatbot.json'
Process finished with exit code 1
Короче говоря, я проверил ошибку строки 83 в файле credentials.py, где комментарий по умолчанию предполагает, что файл не может быть найден, но насколько я могу судить, он правильный. Единственное, что я замечаю, это два \ в ошибке.
Любая помощь приветствуется.
ОБНОВЛЕНИЕ Это стерло эту ошибку, но теперь показывается еще три:
SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
google.api_core.exceptions.PermissionDenied: 403 Missing or insufficient permissions.
5 ответов
Насколько я могу судить, этот путь неверен. Должно быть C:\Users\folder1\folder2\chatbot.json
, Ты пропускаешь \
после C:
,
Решил дополнительные ошибки по;
import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()
У меня такая же ошибка (ПОЛЬЗОВАТЕЛЬ MAC)
Кодfb_test.py
import firebase_admin
from firebase_admin import db
from firebase_admin import credentials
cred = credentials.Certificate("<dir>cred.json")
firebase_admin.initialize_app(cred, {'databaseURL':'https://<URL>'})
Я закончил добавлять параметр verify=False на/Users/<user>/.pyenv/versions/3.9.11/lib/python3.9/site-packages/google/auth/transport/requests.py
response = self.session.request(method, url, data=body, headers=headers,
timeout=timeout, verify=False, **kwargs)
Быть осторожен
использовать этот C:/../
вместо c:\ ... \
не забывай:
cred = credentials.Certificate('C:/Users/ASPIREone/PycharmProjects/amazon/tester/serviceAccountKey.json')
firebase_admin.initialize_app(cred, {
'databaseURL': 'https://hrd-line.firebaseio.com'
})
db = firestore.client()
doc_ref = db.collection(u'users').document(u'president')
doc_ref.set({
u'first': u'Barrack',
u'last': u'Obama',
u'born': 1815
})
У меня тоже была эта пробема. Это было вызвано старой версией Python (2.7.6) в Ubuntu 14.04.
Firebase требует SSLContext, который был представлен в 2.7.9. Я исправил это, используя это Howto.