2016-08-08 6 views
0

Indyを使用してthis pageに従ってRevContent oAuthトークンを取得しようとしています。ここに私のコードはあります:Indyを使用してRevcontent OAuthトークンを取得する

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; 

私はそれを実行するたびに、私は400の間違ったリクエストエラーが発生します。私は間違って何をしていますか?

+2

「clientid」ではなく「client_id」を使用します。 SSL3を使用しないでください。そのサイトはTLS1をサポートしています。 ContentTypeを設定しないでください。 'Post'の周りにtry/exceptを使用して例外を捕捉し、完全なエラーメッセージ' E(EIdHTTPProtocolException).ErrorMessage'を取得してください。 – smooty86

+0

うーん....私はclient_idを使用していなかったとFiddlerを使って実行した。答えと私はあなたに信用を与えるでしょう。 –

答えて

1

client_idを使用してください。clientidではありません。
SSL3を使用しないでください。そのサイトはTLS1をサポートしています。
ContentTypeを設定しないでください。
Postのtry/exceptを使用して例外を捕捉し、完全なエラーメッセージを得る(E as EIdHTTPProtocolException).ErrorMessage

関連する問題