【问题标题】:POST Nest API to get access token with ESP8266 or ArduinoPOST Nest API 以使用 ESP8266 或 Arduino 获取访问令牌
【发布时间】:2018-11-10 19:48:43
【问题描述】:

我打算发布 Nest API 以使用 ESP8266 或 Arduino 获取访问令牌。 我仔细阅读了https://developers.nest.com/guides/api/how-to-auth#test_for_csrf_attacksCalling nest api with esp8266 using arduinoEDK

我尝试使用 URL:/oauth2/access_token 发布 api.home.nest.com,但不知道要使用哪个端口:我尝试了 80、9553 和 443,但均未成功。

【问题讨论】:

    标签: api post access-token esp8266 nest-api


    【解决方案1】:

    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-&gt;setFingerprint() 的行;那是您使用服务器指纹的地方。

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      相关资源
      最近更新 更多