我使用Indy10用Delphi和试图获得谷歌的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的Fiddler 路由您的请求。

我发现,要追查什么对HTTP / HTTPS水平不顺心的优秀工具。

- 的Jeroen

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top