python - 如何验证 Google AppEngine 上的 Python 脚本以使用 Google Firebase?

标签 python google-app-engine firebase firebase-authentication

Google 已经为客户端的 Node.js、Android 和 iOS 身份验证提供了很好的示例,以连接到 Firebase 以使用 Firebase 实时数据库——但是如何通过 Python 从 Google AppEngine 应用程序连接到 Firebase 实时数据库并正确进行身份验证?

最佳答案

以下是我们为实现这一目标所采取的步骤。

(1) 首先您需要一个 Firebase Secret。 在 Firebase 中创建项目后,单击“设置”。然后单击数据库并选择创建一个 secret 。 settings

复制您的 secret 。稍后它将进入您的代码。

secret

(2) 您需要您的 Firebase 网址。 它将具有如下格式:https://.firebaseio.com 这个也抄。

(3) 获取适用于 Python 的 Firebase REST API。 我们使用了这个:https://github.com/benletchford/python-firebase-gae 导航到您的 lib 目录上方并运行此命令,这会将 firebase 代码放入您的 lib 目录:

git clone http://github.com/benletchford/python-firebase-gae lib/firebase

(4) 在您的“main.py”文件(或您正在使用的任何文件)中添加此代码:

from google.appengine.ext import vendor
vendor.add('lib')

from firebase.wrapper import Firebase

FIREBASE_SECRET = 'YOUR SECRET FROM PREVIOUS STEPS'
FIREBASE_URL = 'https://[…].firebaseio.com/'

(5) 将此代码添加到 MainHandler(假设您使用的是 AppEngine):

class MainHandler(webapp2.RequestHandler):
    def get(self):
        fb = Firebase(FIREBASE_URL + 'users.json', FIREBASE_SECRET)

        new_user_key = fb.post({
            "job_title": "web developer",
            "name": "john smith",
        })
        self.response.write(new_user_key)
        self.response.write('<br />')

        new_user_key = fb.post({
            "job_title": "wizard",
            "name": "harry potter",
        })
        self.response.write(new_user_key)
        self.response.write('<br />')

        fb = Firebase(FIREBASE_URL + 'users/%s.json' % (new_user_key['name'], ), FIREBASE_SECRET)
        fb.patch({
            "job_title": "super wizard",
            "foo": "bar",
        })

        fb = Firebase(FIREBASE_URL + 'users.json', FIREBASE_SECRET)
        self.response.write(fb.get())
        self.response.write('<br />')

现在,当您导航到您的 Firebase 实时数据库时,您应该会看到 Harry Potter 作为用户和其他人的条目。

关于python - 如何验证 Google AppEngine 上的 Python 脚本以使用 Google Firebase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38304372/

相关文章:

python - 像 PHP 一样用 Python 发送电子邮件

angular - 如何通过 firebase 异步更新 ng2-charts 中的值

java - Firebase - 如何更新数据列表?

python - appengine DateTimeProperty auto_now=真正的意外行为

python - 使用 App Engine Cloud Endpoints 访问 ndb 数据存储

python - 缺少 'webapp2_extras.sessions' 的配置键 : ['secret_key' ]

ios - 突然无法连接到我的 Firebase 数据库

python - 为 Flask cookies 设置 "secure"属性

python - 将 win32lfn 扩展与 Mercurial 捆绑在一起

python - 在测试用例中使用 django-reversion 时如何为测试对象创建初始修订