【问题标题】:Can't figure out how to get write access to work无法弄清楚如何获得工作的写访问权限
【发布时间】:2016-07-30 05:59:18
【问题描述】:

我正在使用 Nodejs 使用 Firebase 节点模块与 Nest Cloud API 交谈。我正在使用从https://api.home.nest.com/oauth2/access_token 获得的 accessToken,这似乎有效。我的 Nest 用户帐户被提示“接受”这个请求,我做到了,我的应用程序列在 Nest 帐户“与 Nest 一起工作”页面中,所以一切看起来都不错。我在调用 authWithCustomToken 时使用了这个 accessToken,并且我的 Nodejs 应用程序请求了读/写权限(参见 https://developers.nest.com/products/978ea6e2-c301-4dff-8b38-f63d80757162)。从https://developer-api.nest.com/devices/thermostats/[deviceid] 读取 Nest 恒温器属性可以工作,但是当我尝试像这样写入 hvac_mode 时:

this.firebaseRef = new Firebase("https://developer-api.nest.com");

this.myNestThermostat = this.firebaseRef.child("devices/thermostats/"+deviceId);

this.myNestThermostat.set("{'hvac_mode': 'off'}", function (error) { ... }

这总是返回:

FIREBASE 警告:在 /devices/thermostats/fwxNBtjaok6KZJbSXhf2azuBmGSvkcjK 设置失败:没有字段写入权限:/devices/thermostats/fwxNBtjaok6KZJbSXhf2azuBmGSvkcjK

(其中 deviceId 是我在枚举设备时看到的,我只有一个,所以我很确定它是正确的)。

有什么想法吗?

【问题讨论】:

    标签: nest-api


    【解决方案1】:

    好吧,情况并非总是如此,我已经找到了答案。事实证明,如果我像这样创建对属性本身的 firebase 引用:

    var propertyRef = this.myNestThermostat.child(name);

    那么下面就成功了:

    propertyRef.set(value, function (error) { ...

    firebase 文档在这方面具有误导性,因为它让我相信我可以这样写:

    this.myNestThermostat.set("{'hvac_mode': 'off'}", function (error) { ... }

    这在技术上应该可行,但我想这意味着我需要对整个 this.myNestThermostat 进行写访问,而我不需要。棘手。

    不管怎样,我很高兴,因为它现在可以工作了,耶! Firebase + nodejs 摇滚!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多