1

我可以使用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'}
4

2 回答 2

4

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

主要的变化是处理如何创建一个新的 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 库,或修改源以允许提供程序而不是包装简单登录。看起来原始库从不使用电子邮件字段(请参阅评论)。必须进行的另一个更改是更改所有 Firebase URL 以开头的断言https,而是允许它们以httpsor开头wss

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

希望这会有所帮助!

于 2014-09-23T03:48:33.680 回答
2

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

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

于 2014-09-17T23:27:21.333 回答