我可以使用python-firebase与firebaseio交谈,但我找不到任何关于如何使用firebaseio与NEST设备进行实际通信的教程。
firebaseio上的所有例子都与NEST无关,同样似乎没有任何NEST示例与firebaseio有任何关系。
firebaseio帐户是否应该以某种方式从home.nest.com导入数据?我如何链接这两个?
为什么我要使用firebaseio进行身份验证,除非它有NEST的数据?
验证
Firebase中的身份验证只不过是简单地创建令牌 这符合JWT的标准,并把它放入 名为auth的查询字符串。该库为您创建该令牌 所以你永远不会最终在你的网站上构建一个有效的令牌 拥有。如果数据已受到保护,不受写入/读取操作的影响 一些安全规则,后端发送适当的错误消息 返回客户端,状态码为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'}
答案 0 :(得分:4)
Nest运行自己的服务器,这些服务器与Firebase托管服务协议兼容。也就是说,存在一些细微差别。虽然您仍然可以使用Firebase客户端库(以及REST包装器,如python-firebase),但您需要遵循特定说明(Nest Intro here)。
主要更改必须处理您创建新Firebase实例的方式:使用https://<your-firebase>.firebaseio.com
而非使用wss://developer-api.nest.com
。然后,使用Nest身份验证令牌进行身份验证。 Nest-ified 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 library,或修改源以允许提供者而不是包装简单登录。看起来原始库从不使用电子邮件字段(请参阅this评论)。必须进行的另一项更改是change the asserts所有Firebase网址都以https
开头,而是允许它们以https
或wss
开头。
此外,您可以使用Vulcan来管理您的Nest设备,而不是使用常规Firebase工具(如<your-firebase>.firebaseio.com
上的Firebase信息中心或我们的Chrome扩展程序Nest Chrome Extension)。 / p>
希望这有帮助!
答案 1 :(得分:2)
Nest Firebase实例的基本URI为https://developer-api.nest.com,Nest使用自己的OAuth authentication来允许开发人员访问用户的数据。
不熟悉python-firebase,但看起来您可以将Firebase实例URI更改为指向Nest并传入外部OAuth令牌(同时也受Firebase编写的客户端支持)