Strona 1 z 1

[ESP8266] POST na strony z https

: niedziela 10 wrz 2017, 13:17
autor: dambo
Witam!

Usiłuję zrobić mały projekcik - kontroler do spotify. Jest udostępnione API z endpointami do róznych eventów itp. Komendy można wygenerować z poziomu strony https://developer.spotify.com/web-api/c ... post-next/ mozna użyć curl i obsługiwać z konsoli (tu podziękowania dla Grzegorza - za testy), ale mam problem z uruchomieniem tego z ESPka w arduino IDE.
Request z konsoli spotify wygląda tak:

Kod: Zaznacz cały

POST /v1/me/player/next HTTP/1.1
Host: api.spotify.com
Content-Length: 0
Accept-Encoding: gzip, deflate, compress
Accept: application/json
User-Agent: Spotify API Console v0.1
Content-Type: application/json
Authorization: Bearer BQACfwjhvew6fQHR_DS222y1_ELHhy4rRpx0Snn4j3Rm-J99nGr_0VfjmmIvB18KGFDx3d8fi9pfiIVrydEt0lJ8LHN5-EH_GLvGEU5ku_BOogBg6jxGWtiu9Qrk3piGh9Xds0Sn0RrBqAHc


I próbuję to zrobić w ten sposób:

Kod: Zaznacz cały

   HTTPClient http;    //Declare object of class HTTPClient
 
   http.begin("https://api.spotify.com/v1/me/player/next");      //Specify request destination
   http.addHeader("Content-Type", "application/json");
   http.addHeader("Accept","application/json");  //Specify content-type header
   http.addHeader("Authorization","Bearer BQAP-a5JYQCjR8OdJMRRRdj2YwXA0coLq1OSQJxi10pYS9xIKC3VuM5My2VV6HmkKp5nRyV5f0Hov6YJ0L-dw92pMUMb_fnNOex9-RAfzl9oYgYSYfDzy1nU5ewtA4id1UD4I_9UmCcE8eq0");
   http.addHeader("Accept-Encoding","gzip, deflate");

   int httpCode = http.POST("");   //Send the request


no i nie działa - problem zapewne w httpsie? tzn zgaduje :p ktoś ma jakieś doświadczenie z tym/pomysły jak naprawić?

Re: [ESP8266] POST na strony z https

: niedziela 10 wrz 2017, 17:58
autor: j23
Nie orientuję się w spotify, ale jeśli chodzi o proces wymiany i autoryzacji danych to z tego co zauważyłem jest to możliwe do zrobienia po:
1. Zalogowaniu się na spotify (rozpoczyna się sesja, twój device (czyli chyba ESP) o jakimś tam IP i MAC otrzymuje wtedy unikalne ID i wtedy PRAWDOPODOBNIE w oparciu o to ID jest tworzony jednorazowy kod autoryzacyjny, tzn.jednorazowy dla każdej operacji, np.inny przy request, inny przy sending data) o ile sesja nie wygasła.
2. Wysyłasz przez curl, ok. Ale coś jest nie tak z tym Twoim formatem kodu POST (pusty?). Zobacz czy gdzieś są jakieś przykłady wymiany informacji ze spotify.

To pewnie i tak nic nie pomoże, no ale piszę to co zauważyłem.

Edit:
Gdzieś w połowie tej strony niżej są takie wrapper'y do androida plus jakieś tam przykłady:
https://developer.spotify.com/web-api/code-examples/

Pozdrawiam! J23

Re: [ESP8266] POST na strony z https

: niedziela 10 wrz 2017, 18:03
autor: dambo
dzięki! przez te etapy już przeszedłem na samym początku - nie wspomniałem o tym.

Generalnie główny problem już rozwiązałem - trzeba użyć klasy "WiFiClientSecure" i mieć skopiowany SHA1 ze strony spotify.

Re: [ESP8266] POST na strony z https

: środa 13 wrz 2017, 00:13
autor: dambo
Mały dowód, że coś działa - pobieram stan utworu, czas, nazwę, album, wykonawcę oraz mogę sterować play/pause/next/previous i głośność :)

https://youtu.be/tOCsiWCVGoM

Odświeżenie zajmuje ok 3 sek, z czego głównie jest to czas oczekiwania na odpowiedź z serwera.