Mein Programm (-feature) zur Abfrage von Metadaten von Spotify funktioniert nach ausgesprochen mühsamer Einarbeitung
(siehe hier) mittlerweile im Großen und Ganzen so, wie es soll. Nicht ganz unerwartet taucht aber mal wieder ein neues Problem auf. Das Accesstoken, das bei der Authentifizierung zugeteilt wird, ist ja nur eine begrenzte Zeit (1 Stunde) gültig. So geschah es, dass irgendwann die Daten-Übertragung von Spotify unvermittelt abbrach, weil die Gültigkeitsdauer des Accesstoken abgelaufen war. Nun versuche ich seit Tagen, eine Abfrage für ein neues Accesstoken zu implementieren. Dabei müssen in einem Post - Request einige Daten übermittelt werden (s.Anhang). Bisher ist mir das leider nicht gelungen. Ich bekomme immer nur einen Error 400 (Bad Request).
Delphi-Quellcode:
Function TSpManager.GetRefreshToken:
string;
var s,EncodedAccessData:
string;
Client: TRestClient;
Request: TRESTRequest;
begin
Client := TRestClient.Create('
https://accounts.spotify.com/api/token');
try
s := stcf.AccessData.clientID + '
:' + stcf.AccessData.clientsecret;
EncodedAccessData := TNetEncoding.Base64.Encode(s);
//showmessage(s + #13#10 + encoded);
Request := TRESTRequest.Create(Client);
Request.Method := TRESTRequestMethod.rmPOST;
Request.AddParameter('
Authorization', '
Basic ' + EncodedAccessData, pkHTTPHEADER);
Request.AddBody('
grant_type=refresh_token', ctAPPLICATION_X_WWW_FORM_URLENCODED);
Request.AddBody('
refresh_token=' + stcf.AccessData.RefreshToken, ctAPPLICATION_X_WWW_FORM_URLENCODED);
Request.Execute;
[...]
finally
FreeAndNIL(Client);
end;
stcf.AccessData.RefreshToken enthält den bei der Authentifizierung zugeteilten Refresh-Token.
Was mache ich falsch?