<YOUR-FIREBASE>.firebaseio.com 和 home.nest.com 之间的联系是什么



我可以使用python firebase与firebaseio交谈,但我找不到任何关于如何使用firebaseio与NEST设备进行实际通信的教程。

firebaseio上的例子都与NEST无关,同样,NEST的例子似乎都与firebaseio无关。

firebaseio帐户是否应该以某种方式从home.nest.com导入数据?如何将两者联系起来?


为什么我要用firebaseio进行身份验证,除非它有NEST的数据?

python firebase:

身份验证

Firebase中的身份验证只是简单地创建一个令牌符合JWT标准名称为auth的querystring。库为您创建该令牌因此,您永远不会在您的拥有如果数据已通过对于某些安全规则,后端会发送适当的错误消息返回到具有状态代码403 Forbidden的客户端。

from firebase import firebase
firebase = firebase.FirebaseApplication('https://your_storage.firebaseio.com', authentication=None)
result = firebase.get('/users', None, {'print': 'pretty'})
print result
{'error': 'Permission denied.'}
authentication = firebase.Authentication('THIS_IS_MY_SECRET', 'ozgurvt@gmail.com', extra={'id': 123})
firebase.authentication = authentication
print authentication.extra
{'admin': False, 'debug': False, 'email': 'ozgurvt@gmail.com', 'id': 123, 'provider': 'password'}
user = authentication.get_user()
print user.firebase_auth_token
"eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhZG1pbiI6IGZhbHNlLCAiZGVidWciOiBmYWxzZSwgIml
hdCI6IDEzNjE5NTAxNzQsICJkIjogeyJkZWJ1ZyI6IGZhbHNlLCAiYWRtaW4iOiBmYWxzZSwgInByb3ZpZGVyIjog
InBhc3N3b3JkIiwgImlkIjogNSwgImVtYWlsIjogIm96Z3VydnRAZ21haWwuY29tIn0sICJ2IjogMH0.lq4IRVfvE
GQklslOlS4uIBLSSJj88YNrloWXvisRgfQ"
result = firebase.get('/users', None, {'print': 'pretty'})
print result
{'1': 'John Doe', '2': 'Jane Doe'}

Nest运行自己的服务器,这些服务器与Firebase托管服务的协议兼容。也就是说,存在一些细微的差异。虽然您仍然可以使用Firebase客户端库(以及REST包装器,如python Firebase),但您需要遵循特定的说明(此处为Nest Intro)。

主要的变化是如何创建一个新的Firebase实例:使用wss://developer-api.nest.com而不是https://<your-firebase>.firebaseio.com。然后使用Nest身份验证令牌进行身份验证。Nest化的JS看起来像:

var dataRef = new Firebase('wss://developer-api.nest.com');
dataRef.auth(nestToken);

Python应该看起来类似:

from firebase import firebase
authentication = firebase.Authentication('YOUR_NEST_TOKEN', 'YOUR_EMAIL', extra={})
firebase = firebase.FirebaseApplication('wss://developer-api.nest.com', authentication)

通常,对于Nest,您只需要令牌,而不需要电子邮件或额外的内容,这意味着您可能必须使用其他python firebase库,或者修改源以允许使用除包装Simple Login之外的提供商。看起来原始库从未使用过电子邮件字段(请参阅此评论)。必须进行的另一项更改是更改所有Firebase URL以https开头的断言,并允许它们以httpswss开头。

此外,您不使用常规的Firebase工具(如<your-firebase>.firebaseio.com的Firebase Dashboard或我们的Chrome扩展Vulcan),而是使用Nest Chrome扩展来管理您的Nest设备。

希望这能有所帮助!

Nest Firebase实例的基本URI为https://developer-api.nest.comNest使用他们自己的OAuth身份验证来允许开发人员访问用户的数据。

不熟悉python firebase,但看起来您可以将firebase实例URI更改为指向Nest并传入外部OAuth令牌(两者都由firebase编写的客户端支持)

最新更新