【问题标题】:Rate Limit Error to Nest Thermostat - Response Code 429Nest 恒温器的速率限制错误 - 响应代码 429
【发布时间】:2015-04-10 15:55:06
【问题描述】:

我使用我在 Github 上找到的一个非常酷的 Google 脚本(来源:https://gist.github.com/beezly/9b2de3749d687fdbff3f)来获取我的 Nest 恒温器上的温度并将其记录到 Google 电子表格中。

当我手动运行脚本时效果很好,但当我使用时间触发器自动运行它时就不行了。

在此行将凭据发布到 API 时:

第 12 行:var response = JSON.parse(UrlFetchApp.fetch('https://home.nest.com/user/login', options).getContentText());

引发的异常是:

https://home.nest.com/user/login 的请求失败,返回代码 429。 截断的服务器响应:请求过多(使用 muteHttpExceptions 检查完整响应的选项)(第 12 行,文件“代码”)

我怀疑不是我一个人在使用脚本,并且触发器使用的谷歌源 IP 已经超过了 Nest API 的限制。

你有什么解决办法吗?我考虑过使用代理服务器,但UrlFetchApp.fetch 函数似乎不接受它。

谢谢,

PF

【问题讨论】:

  • 如下更改选项对象。这应该会为您提供来自 nest api 的完整返回错误。 var options = { "method" : "post", "payload" : payload, "muteHttpExceptions":"true" };
  • 我做了更改,但它仍然给我同样的错误(老实说,这已经很明确了)
  • 希望这篇博文对您有所帮助community.nest.com/message/43271
  • Nest 有两种速率限制:按设备/结构和按访问令牌。 Nest Documentation - Rate Limits 我认为“设备”是您的恒温器。访问令牌与谷歌服务器没有任何关系,我不认为。 Nest 正在监视诸如发件人的 IP 地址之类的东西,然后他们端的某个人应该能够为此调整速率限制。谷歌无法解决这个问题。也许联系 Nest?代码是手动运行的,所以语法必须正确。
  • 当您手动运行代码时,您以某种方式输入密码和电子邮件?这是硬编码到你的脚本中的吗?

标签: json google-apps-script urlfetch http-response-codes http-status-code-429


【解决方案1】:

我只是在开发过程中测试同一个脚本时遇到了“请求过多”错误。我能够让这个函数每小时运行一次,甚至每 5 分钟一次。

要让此脚本在触发器上按预期运行,只需将 getData() 切换为 doGet(),将其发布为具有匿名访问权限的 Web 应用程序,然后创建另一个发出请求的函数(我称之为 getData())到您发布的网络应用程序 url(调用 doGet()),然后只需创建基于时间的触发器来运行新的 getData()。

这是我的版本https://gist.github.com/jbutters/bece2fffe85080fe4314

【讨论】:

  • 非常感谢您的回复。我试过你的代码,当我从脚本编辑器运行 doGet() 函数时它确实有效。当我运行 getData() 时它不起作用(什么都不做)。当我发布应用程序并调用应用程序 URL 时,我收到错误“请求失败 home.nest.com/user/login 返回代码 400。截断的服务器响应:{“错误”:“访问拒绝”,“错误描述”:“无效的用户凭据”} (使用 muteHttpExceptions 选项检查完整响应)”。似乎很好奇,因为正如我所说, doGet() 在脚本编辑器中运行良好。有什么想法吗?
  • 尝试保存新版本,然后发布该新版本,链接应该保持不变,但仔细检查或测试您登录的浏览器会话中的“最新代码”/dev 链接(“最新代码”) ' /dev 链接不适用于基于时间的触发器)
  • 'latest code' /dev 链接有效...但我需要登录才能使用它。官方网页应用 URL 仍然返回相同的错误 400,但我不需要登录即可使用它。
  • 由于“最新代码”有效,您是否尝试保存项目的新版本,然后发布该新版本:执行应用程序为:我(您的谷歌帐户)和谁有权访问该应用程序:任何人,甚至是匿名的
  • 是的,现在它工作了,确实,我没有正确理解你在开始时所说的“新版本”的意思,对此感到抱歉。非常感谢!
猜你喜欢
  • 2014-08-19
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
相关资源
最近更新 更多