我可以使用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
开头的断言,并允许它们以https
或wss
开头。
此外,您不使用常规的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编写的客户端支持)