无法弄清楚如何获得写作权限

时间:2016-07-30 05:59:19

标签: nest-api

我正在使用使用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]读取Nest恒温器属性有效,但是当我尝试写这样的hvac_mode时:

  

this.firebaseRef =新的Firebase(“https://developer-api.nest.com”);

     

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

     

this.myNestThermostat.set(“{'hvac_mode':'off'}”,函数(错误){...}

并且总会返回:

  

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

嗯,总是这样,我已经找到了答案。如果我像这样创建一个对属性本身的firebase引用,结果是:

  

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

然后以下成功:

  

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

firebase文档对此有误导性,因为它让我相信我可以写下这个:

  

this.myNestThermostat.set(" {' hvac_mode':' off'}",功能(错误){...}

技术上应该有效,但我想这意味着我需要对整个this.myNestThermostat进行写访问,我不会这样做。棘手。

无论如何,我很高兴,因为它现在有效,是的! Firebase + nodejs摇滚!