使用 Indy 实现 OAuth2 规范的 V10

Implementing V10 of the OAuth2 specification with Indy

我正在尝试为 MailChimp 实施 OAuth2。

their API documentation 他们说

Our server implements v10 of the OAuth2 specification, and supports Web Server Flow.

对于过去的 OAuth2 实现,我使用了这些设置:

  SSLOptions.Method := sslvSSLv23;
  SSLOptions.SSLVersions := [sslvSSLv23];
  --- or ---
  SSLOptions.Method := sslvTLSv1_2;
  SSLOptions.SSLVersions := [sslvTLSv1_2];

Indy10 是否支持 版本 10??

 TIdSSLVersion = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2);

我在尝试调用 OAuth 时遇到 "HTTP/1.0 400 Bad Request" 错误。不确定这是错误的参数还是我没有发送正确的 SSL 版本控制。他们提供的不多 documentation/troubleshooting.

Indy 根本不支持OAuth,更不用说OAuth2 的v10 了。不过,有几个使用 Indy 的第三方 OAuth 实现可用。

也就是说,与服务器的通信只是普通的 HTTPS,Indy 处理得很好。假设您要向 https: url 而不是 http: url 发送请求,那么您看到 "HTTP/1.0 400 Bad Request" 的事实就意味着 SSL/TLS工作正常,因为请求和响应都是加密的。 "Bad Request" 仅仅意味着你的 HTTP 请求参数是错误的。

在没有看到实际的 HTTP 消息的情况下,我只能猜测 OAuth 身份验证可能在某种程度上存在格式错误。