【发布时间】:2018-09-03 12:07:07
【问题描述】:
我们正在使用 Firebase 身份验证进行测试,并且正在检查 python SDK。 尝试从我们的 Firebase 用户进行简单的获取用户操作会导致以下错误:
TransportError: HTTPSConnectionPool(host='accounts.google.com', port=443): Max retries exceeded with url: /o/oauth2/token (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",))
我们从本地服务器然后从暂存 GAE URL 进行测试,因为我们最初的想法是与 Firebase 通信可能要求请求来自 Https URL。但是,在这两种情况下,我们都看到了相同的错误。那可能是别的东西。
使用的代码摘录:
import firebase_admin
from firebase_admin import auth
from firebase_admin import credentials
cred = credentials.Certificate("custom/conf/conf.json")
default_app = firebase_admin.initialize_app(cred)
user_uid = '901234753'
user = auth.get_user(user_uid)
print 'Successfully fetched user data: {0}'.format(user.uid)
任何线索可能导致此错误以及如何解决它?
更新 1:
@Mihail Russu 在他的评论中建议在 app.yaml 中添加 SSL
- name: ssl
version: latest
生成了一个新错误:ImportError: cannot import name RAND_egd
排队:
from _ssl import RAND_add, RAND_egd, RAND_status, SSL_ERROR_ZERO_RETURN, SSL_ERROR_WANT_READ, SSL_ERROR_WANT_WRITE,,SSL_ERROR_INVALID_ERROR_CODE
根据页面 "ImportError: cannot import name RAND_egd " 和页面 "Fix RAND_egd import error in SDK..." 我将位于 /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine (在 Mac 上)的 socket.py 编辑为符合他们的建议:
from _ssl import \
RAND_add, \
RAND_status, \
SSL_ERROR_ZERO_RETURN, \
SSL_ERROR_WANT_READ, \
SSL_ERROR_WANT_WRITE, \
SSL_ERROR_WANT_X509_LOOKUP, \
SSL_ERROR_SYSCALL, \
SSL_ERROR_SSL, \
SSL_ERROR_WANT_CONNECT, \
SSL_ERROR_EOF, \
SSL_ERROR_INVALID_ERROR_CODE
try:
from _ssl import RAND_egd
except ImportError:
# LibreSSL does not provide RAND_egd
pass
更新 1 个结果:
生成的新错误:
-> 本地开发服务器:('Connection aborted.', error(13, 'Permission denied'))
-> GAE:('Connection broken: IncompleteRead(100 bytes read)', IncompleteRead(100 bytes read))
任何人都使用 GAE 成功实施了 Firebase 身份验证?这感觉有点像掉进兔子洞,认为使用 SDK 就像使用 javascript 版本的 firebase auth 一样简单。
【问题讨论】:
标签: python-2.7 firebase google-app-engine firebase-authentication webapp2