Ich versuche gerade, eine Beispielroutine für OAuth-Authentifizierung von der Bibliothek "Synapse" nach "
Indy" zu konvertieren.
Code:
procedure TForm1.AuthorizeButtonClick(Sender: TObject); // original by Lukas Gebauer, Ararat Synapse project
var
http: thttpsend;
response: string;
A: TStringStream;
begin
http := THttpsend.Create;
http.Protocol := '1.1';
http.UserAgent := 'DotNetOpenAuth/3.4.6.10357';
http.Document.position := 0;
writestrtostream(http.Document, OAuthString);
http.Document.position := 0;
http.MimeType := 'application/x-www-form-urlencoded; charset=utf-8';
http.HTTPMethod('POST', oAuthURL);
http.Document.position := 0;
response := readstrfromstream(http.Document, http.Document.Size);
memo1.Lines.Add(response);
end;
Code:
procedure TForm1.ButtonAuthStringListClick(Sender: TObject);
var
AHTTP : TIdHTTP;
ARequest : TStringList;
AResponse : String;
begin
AHTTP := TIdHTTP.Create;
ARequest := TStringList.Create;
ARequest.Add(OAuthString);
AResponse := AHTTP.Post(OAuthURL, ARequest);
Memo1.Lines.Add(AResponse);
ARequest.Free;
AHTTP.Free;
end;
Während die Synpase-Version mit dem gleichen OAuthString tadellos funktioniert, gibt die
Indy-Version leider eine OAuth-Fehlermeldung zurück: "oauth_error_message=Error while reading message DotNetOpenAuth.OAuth.Messages.UnauthorizedTokenReq uest..."
Kennt jemand zufällig sowohl Synapse als auch
Indy und kann sagen, woran das liegen kann?