2016-07-30 87 views
1

我正在使用使用firebase节点模块的Nodejs与Nest Cloud API交流。我正在使用从https://api.home.nest.com/oauth2/access_token获得的accessToken,而且这似乎有效。 My Nest用户帐户被提示“接受”这个请求,我做了这些,我的应用在Nest帐户“Works with Nest”页面中列出,所以看起来都不错。我在调用authWithCustomToken时使用这个accessToken,这个工作和我的Nodejs应用程序请求读/写权限(请参阅https://developers.nest.com/products/978ea6e2-c301-4dff-8b38-f63d80757162)。而从https://developer-api.nest.com/devices/thermostats/[deviceid]作品阅读鸟巢恒温性能,但是当我尝试写hvac_mode这样的:无法弄清楚如何获得写入权限

this.firebaseRef =新的火力地堡(“https://developer-api.nest.com”);

this.myNestThermostat = this.firebaseRef.child( “装置/恒温器/” + DEVICEID);

this.myNestThermostat.set( “{ 'hvac_mode': '关'}” 功能(错误){...}

,这总是返回:

火力警告:设定/设备/恒温/ fwxNBtjaok6KZJbSXhf2azuBmGSvkcjK失败:没有写权限(个),场(S):/设备/恒温/ fwxNBtjaok6KZJbSXhf2azuBmGSvkcjK

(其中设备ID是我看到的时候我历数我的dev冰,我只有一个,所以我很确定它是正确的)。

任何想法?

回答

1

那么,是不是总是这样,我找到了答案了。原来,如果我创建一个像这样的财产本身的火力点引用:

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

那么下面成功:

propertyRef.set(价值,功能(错误){...

的火力文档是误导性的,是因为它让我相信我可以这样写:

this.myNestThermostat.set( “{ 'hvac_mode': '关'}” 功能(错误){...}

技术上应该工作,但我想这将意味着我需要写入整个this.myNestThermostat,我不这样做。棘手。

无论如何,我很高兴,因为现在的工作,耶! Firebase + nodejs岩石!