Einzelnen Beitrag anzeigen

Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
118 Beiträge
 
Delphi 11 Alexandria
 
#1

RESTRequest - Anfrage klappt nicht: "Bad Request"

  Alt 11. Nov 2020, 14:50
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?
Miniaturansicht angehängter Grafiken
sp_refreshtoken.jpg  
  Mit Zitat antworten Zitat