J'essaie d'utiliser Indy pour récupérer un jeton RevAcontent oAuth selon this page. Voici mon code:Utilisation d'Indy pour récupérer le jeton OAuth Revcontent
procedure TForm2.Button1Click(Sender: TObject);
var
IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocketOpenSSL;
idhttp:tidhttp;
params: TStringList;
begin
idhttp:=tidhttp.create(self);
IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
with IdSSLIOHandlerSocket1 do begin
SSLOptions.Method := sslvSSLv23;
SSLOptions.SSLVersions := [sslvSSLv23];
end;
params := TStringList.create;
params.add('clientid=xxyyzz');
params.add('client_secret=xxyyzzxxyyzzxxyyzzxxyyzzxxyyzzxxyyzz');
params.add('grant_type=client_credentials');
with IdHTTP do begin
IOHandler := IdSSLIOHandlerSocket1;
Request.ContentType := 'application/x-www-form-urlencoded';
end;
showmessage(idhttp.Post('https://api.revcontent.io/oauth/token',params));
end;
Mais chaque fois que je l'exécute, je reçois une erreur 400 Bad Request. Qu'est-ce que je fais mal?
Utilisez 'client_id', pas' clientid'. N'utilisez pas SSL3, ce site prend en charge TLS1. Ne définissez pas ContentType. Utilisez try/except autour de 'Post' pour attraper l'exception et obtenir le message d'erreur complet' (E comme EIdHTTPProtocolException) .ErrorMessage' – smooty86
yep .... Je viens de me découvrir après l'avoir exécuté dans Fiddler que je n'utilisais pas client_id .. une réponse et je vais vous donner crédit. –