Nest 通过 HTTPS 运行其 API,它使用端口 443。即使他们允许端口 80,您也不应该使用它;您将在未加密的情况下传输您的凭据或 API 令牌,这很危险。
如果您的代码在 ESP8266 上运行,请务必使用 SSL 库。仅对端口 443 说 HTTP 协议是不够的。
您没有共享任何代码,因此我无法提供更多建议,但请考虑使用 BearSSL::WiFiClientSecure 类进行连接。
这里有一个很好的例子
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient/examples/BasicHttpsClient/BasicHttpsClient.ino
您需要知道 Nest 服务器的 SSL 指纹。你可以通过运行找到它
openssl s_client -connect api.home.nest.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout | cut -d'=' -f2
在 Mac 或 Linux 计算机上的终端窗口中。指纹允许您的客户端确认服务器就是它声称的身份。
在我写这篇文章的时候,指纹目前是:
DE:AA:EB:EE:C0:4B:14:97:27:C8:29:46:5C:05:44:2C:26:DE:55:6B
请注意,这可能会随时间而变化(甚至取决于处理您请求的特定服务器),因此您可能需要对其进行更改。您可以在上面链接的示例中找到调用client->setFingerprint() 的行;那是您使用服务器指纹的地方。