DelphiでインディでGoogleのOAuth
質問
私はDelphiでIndy10を使用してGET GoogleのOAuth 仕事に。最初のステップは、OAuthGetRequestTokenメソッドにリクエストをすることです。戻り次のコード400エラー。任意の助けいただければ幸いです。
procedure TForm1.Button1Click(Sender: TObject);
var
IdHTTP: TIdHTTP;
IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocketOpenSSL;
Params: TStringList;
mString: String;
begin
Params := tstringlist.create;
IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
IdHTTP := TIdHTTP.create(nil);
with IdSSLIOHandlerSocket1 do begin
SSLOptions.Method := sslvSSLv3;
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 2;
end;
with IdHTTP do begin
IOHandler := IdSSLIOHandlerSocket1;
ReadTimeout := 0;
AllowCookies := True;
ProxyParams.BasicAuthentication := False;
ProxyParams.ProxyPort := 0;
Request.ContentLength := -1;
Request.ContentRangeEnd := 0;
Request.ContentRangeStart := 0;
Request.ContentType := 'application/x-www-form-urlencoded';
request.host := 'https://www.google.com';
Request.Accept := 'text/html, */*';
Request.BasicAuthentication := False;
Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
HTTPOptions := [hoForceEncodeParams];
end;
Params.Add('scope=https://www.google.com/analytics/feeds/');
Params.Add('oauth_consumer_key=anonymous');
Params.Add('oauth_signature_method=HMAC-SHA1');
Params.Add('oauth_signature=wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D');
Params.Add('oauth_timestamp=137131200');
Params.Add('oauth_nonce=4572616e48616d6d65724c61686176');
showmessage(HTTPDecode(IdHTTP.Post('https://www.google.com/accounts/OAuthGetRequestToken',Params)));
end;
解決
(例外が発生する)応答DataStringで
見て、それはあなたの問題のために、より詳細な理由を与えるだろう。
例えば、あなたのコードをしようと、私は最初に「現在時刻から離れすぎてタイムスタンプ」を得、その後、oauth_timestampを更新した後、私は「無効な署名」...
他のヒント
は、のレスポンスヘッダ内のリターン・メッセージを取得するかどうかを確認してくださいの、あまりにも、400ほとんどのWebサービス以外は間違って何が起こっているかについてのテキスト記述のいくつかの種類を提供します。
また、それ以外の場合は、インディは、サーバが受け付けない場合がありますエンコードされていない通信にフォールバック可能性がある、OpenSSLライブラリが実際にロードされていることを確認します。
HTTPフィドラーするを通して、あなたの要求をルーティングしてみます。
私は、HTTP / HTTPSレベルでうまくいかないものをトレースするための優れたツールであることが判明します。
- イェルーン
所属していません StackOverflow