2016-07-30 89 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岩石!