0

我正在使用 OAuth2.0 用户代理身份验证流程来获取访问和刷新令牌,以便我可以通过远程访问使用 Foce.com REST API。现在,问题是我能够成功授权并接收令牌,但是在授权我的客户端应用程序之后使用这些令牌时,我收到 java.net.ConnectException: Connection denied 错误。

按照我正在做的步骤

  1. 重定向到 https://login.salesforce.com/services/oauth2/authorize?response_type=token&client_id= {my_client_id}&redirect_uri={my_redirect_uri}&state=myState

  2. 在 salesforce 中授权应用程序,然后以
    {my_redirect_uri}#access_token={my_access_token}&refresh_token={my_refresh_token}&instance_url=https%3A%2F%2Fap1.salesforce.com&id=的形式在 redirect_uri 的哈希中接收访问令牌和刷新令牌https%3A%2F%2Flogin.salesforce.com%2Fid%2F00D90000000gscOEAQ%2F00590000000sdtJAAQ&issued_at=1351151192815&signature={my_signature_value}&state=myState &scope=id+api+refresh_token

  3. 现在,我使用 REST API 使用相同的访问令牌,通过 POST 到 https://ap1.salesforce.com/services/data/v20.0/sobjects/Lead/ 请求标头:
    Content-Type: application/ json
    授权:OAuth {my_access_token}

我在发送帖子时没有转义访问令牌,因为在使用 CURL 时需要这样做。使用 HttpClient Java API 时也需要这样做吗?

我得到的响应是“java.net.ConnectException:连接被拒绝错误”。有人可以让我知道我做错了什么或如何进一步调试它吗?有什么方法可以查看 Salesforce 端发生了什么?一些日志可能是?

如果我也尝试 OAuth Refresh Token Process,我会收到完全相同的连接被拒绝错误。

4

1 回答 1

0

对不起,噪音。

在使用刷新令牌过程验证客户密码时,我得到了带有“过期访问/刷新令牌”的“invalid_grant”,但由于它是安全传输,所以我在 Java 中得到的只是“连接被拒绝”,没有详细的错误消息。

如此处所述,我通过在 Charles 中设置 SSL 代理了解了详细错误。之后,我能够看到发送到https://ap1.salesforce.com的请求参数和响应,这在之前是不可读的。

于 2012-10-30T18:13:41.450 回答