从ESP8266(Arduino IDE)控制Spotify

时间:2018-07-28 16:13:31

标签: arduino spotify esp8266

所以我想从ESP8266控制我的Spotify。我想从基础开始,这样我可以对整个过程有一个整体的认识,并将其集成到其他项目中。 Spotify提供了这些curl命令供使用,但ESP8266并不是curl ...我不确定如何将它变成:curl -X "PUT" "https://api.spotify.com/v1/me/player/play" -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer putsomerandomstuffherethisisanauthtoken"变成ESP可以使用的东西...我已经有了基本的ESP库,例如{{1 }}等。如果有人可以指出正确的方向,那就太好了。谢谢!

1 个答案:

答案 0 :(得分:0)

您将要使用HTTPClient库。

您的代码应如下所示:

#include <ESP8266HTTPClient.h>

#define SPOTIFY_AUTHORIZATION_TOKEN "Bearer putsomerandomstuffherethisisanauthtoken"

// easily get fingerprints with https://www.grc.com/fingerprints.htm
#define SPOTIFY_FINGERPRINT "AB:BC:7C:9B:7A:D8:5D:98:8B:B2:72:A4:4C:13:47:9A:00:2F:70:B5"

void spotify_play() {
  HTTPClient client;

  client.begin("https://api.spotify.com/v1/me/player/play", String(SPOTIFY_FINGERPRINT);

  client.addHeader("Accept", "application/json"");
  client.addHeader("Content-Type", "application/json");
  client.addHeader("Content-Length", "0");
  client.addHeader("Authorization", SPOTIFY_AUTHORIZATION_TOKEN);

  int httpCode = client.sendRequest("PUT");
  if(httpCode == -1) {
    Serial.printf("http error: %s\n", http.errorToString(httpCode).c_str());
  } else {
    Serial.printf("HTTP status code %d\n", httpCode);
  }
}

Spotify API文档应列出成功或错误后返回的HTTP状态代码。成功应该在200范围内。

指纹是为了让您验证自己是否在与正确的网站进行交谈。当Spotify更改其SSL证书时,您需要更新指纹。您不需要使用curl或在功能更强大的系统上执行此操作,因为它们更容易获得证书。有been some work to make this easier on the ESP8266,但我不确定那有多可靠。

[已编辑以添加内容长度标头]