【问题标题】:How i can get the Bearer Token from HttpClient?我如何从 HttpClient 获取承载令牌?
【发布时间】:2019-09-28 00:12:07
【问题描述】:

我正在尝试通过 HttpClient 发送 POST 请求,但服务器响应显示“未经授权”错误。我如何获得不记名令牌?我搜索了解决方案,但我不明白..

这是我的代码,我不知道如何获取请求的令牌...

HttpPost request = new HttpPost("http://domain...");
request.setHeader(HttpHeaders.ACCEPT, "application/json, text/plain, */*");
request.setHeader(HttpHeaders.CONTENT_TYPE, "application/#json");
request.setHeader(HttpHeaders.ACCEPT_LANGUAGE, "de,en-US;q=0.7,en;q=0.3");
request.setHeader(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate, br");
request.setHeader(HttpHeaders.REFERER, "https://domain...");
request.setHeader("DNT", "1");
request.setHeader(HttpHeaders.HOST, "host..");
String authToken = ""; // ... ?
request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + authToken);
StringEntity params = new StringEntity("{}");
params.setContentEncoding("UTF-8");
request.setEntity(params);
response = this.getHttpClient().execute(request);

【问题讨论】:

    标签: java oauth authorization httpclient bearer-token


    【解决方案1】:

    首先,您必须使用用户名和密码(使用 HTTP 调用)对用户进行身份验证,然后您将获得令牌作为响应,您可以将其添加到标题中的下一个 POST 调用中。

    在您的 POST 调用之前需要一个 get/post 调用,以便您获得令牌。 相同的令牌可用于所有进一步的调用。

    【讨论】:

      【解决方案2】:

      您似乎正在尝试访问一些 API,这需要您先获取一些访问令牌(承载令牌)才能访问实际 API。

      大多数流程涉及两个步骤,如下所述。

      第 1 步。 使用基本身份验证获取不记名令牌(以下端点和参数是示例值,您的 API 会有所不同)

      发布/授权 `request.setHeader(HttpHeaders.AUTHORIZATION, "Basic" + authToken);`

      第 2 步: Step1 会给你某种访问令牌作为响应。您需要使用它来进行任何后续 API 调用。

      GET /学生/马克 `request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer" + authToken);`

      您可以在What is the OAuth 2.0 Bearer Token exactly?阅读有关不记名令牌的更多信息

      如果您仍有任何疑问或无法使用我提到的方法访问您的 API,请告诉我。

      【讨论】:

      • 您好,这很有帮助!但我没有 api 文档。我如何在 firefox 中通过控制台找到 /auth url?我通过实时 http 标头尝试它,但我找不到任何解决方案
      • 您将需要 API 文档。自己很难猜到:)
      猜你喜欢
      • 2016-10-31
      • 2018-10-21
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 2021-09-16
      • 1970-01-01
      • 2018-08-14
      相关资源
      最近更新 更多