<your-firebase> .firebaseio.com和home.nest.com </your-firebase>之间的联系是什么?

时间:2014-09-16 15:17:51

标签: python firebase nest-api

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

firebaseio上的所有例子都与NEST无关,同样似乎没有任何NEST示例与firebaseio有任何关系。

firebaseio帐户是否应该以某种方式从home.nest.com导入数据?我如何链接这两个?


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

python-firebase

  

验证

     

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'}

2 个答案:

答案 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开头,而是允许它们以httpswss开头。

此外,您可以使用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编写的客户端支持)