获取承载令牌并从另一个API消耗令牌

huangapple go评论87阅读模式
英文:

Get bearer token and consume token from another API

问题

我已经创建了一个API来获取令牌,并在获取到令牌后将其用于同一个API中,以下是我创建的控制器:

  1. @GetMapping("/getNik")
  2. public String pushToken() {
  3. // 生成令牌
  4. String uri = "http://some-url-to-get-token";
  5. String notEncoded = "*****:******";
  6. String encodedAuth = Base64.getEncoder().encodeToString(notEncoded.getBytes());
  7. System.out.println("encodeUserPass " + encodedAuth);
  8. RestTemplate restTemplate = new RestTemplate();
  9. HttpHeaders headers = new HttpHeaders();
  10. headers.setContentType(MediaType.APPLICATION_JSON);
  11. headers.set("client_id", "client_id");
  12. headers.set("Authorization", "Basic " + encodedAuth);
  13. HttpEntity<String> result = new HttpEntity<String>(headers);
  14. String token = restTemplate.postForObject(uri, result, String.class);
  15. Object obj = JSONValue.parse(token);
  16. JSONObject jsonObject = (JSONObject) obj;
  17. String access_token = (String) jsonObject.get("access_token");
  18. // 获取令牌
  19. System.out.println("baru di get " + access_token);
  20. // 访问获取 nik 的 API
  21. String urix = "http:/some-url-that-need-otp-to-access";
  22. RestTemplate restTemplatex = new RestTemplate();
  23. HttpHeaders headersx = new HttpHeaders();
  24. headersx.setContentType(MediaType.APPLICATION_JSON);
  25. headersx.set("Authorization", "Bearer " + access_token);
  26. System.out.println("initokennya " + access_token);
  27. HttpEntity<String> resultx = new HttpEntity<String>(headersx);
  28. System.out.println("sama?" + resultx);
  29. // 失败
  30. String get = restTemplatex.getForObject(urix, String.class, resultx);
  31. return get;
  32. }

问题是当我获取到令牌后,尝试访问API时,但无法使用它,出现401未经授权的错误,是否有我遗漏的东西?

英文:

I have created an API to get bearer token and use the token on the same API as I got the token, here is the controller I have created:

  1. @GetMapping(&quot;/getNik&quot;)
  2. public String pushToken() {
  3. //generate token
  4. String uri = &quot;http://some-url-to-get-token&quot;;
  5. String notEncoded =&quot;*****:******&quot;;
  6. String encodedAuth = Base64.getEncoder().encodeToString(notEncoded.getBytes());
  7. System.out.println(&quot;encodeUserPass &quot;+encodedAuth);
  8. RestTemplate restTemplate = new RestTemplate();
  9. HttpHeaders headers = new HttpHeaders();
  10. headers.setContentType(MediaType.APPLICATION_JSON);
  11. headers.set(&quot;client_id&quot;, &quot;client_id&quot;);
  12. headers.set(&quot;Authorization&quot;, &quot;Basic &quot;+encodedAuth);
  13. HttpEntity&lt;String&gt; result = new HttpEntity&lt;String&gt;(headers);
  14. String token = restTemplate.postForObject(uri, result, String.class);
  15. Object obj=JSONValue.parse(token);
  16. JSONObject jsonObject = (JSONObject) obj;
  17. String access_token = (String) jsonObject.get(&quot;access_token&quot;);
  18. //dapat token
  19. System.out.println(&quot;baru di get &quot;+access_token);
  20. //hit get nik
  21. String urix = &quot;http:/some-url-that-need-otp-to-access&quot;;
  22. RestTemplate restTemplatex = new RestTemplate();
  23. HttpHeaders headersx = new HttpHeaders();
  24. headersx.setContentType(MediaType.APPLICATION_JSON);
  25. headersx.set(&quot;Authorization&quot;, &quot;Bearer &quot;+access_token);
  26. System.out.println(&quot;initokennya &quot;+access_token);
  27. HttpEntity&lt;String&gt; resultx = new HttpEntity&lt;String&gt;(headersx);
  28. System.out.println(&quot;sama?&quot;+resultx);
  29. //fail
  30. String get = restTemplatex.getForObject(urix ,String.class, resultx);
  31. return get;
  32. }

The problem is when I got the token, I try to hit the API, but I can't use it, error 401 Unauthorized is there something I missed?

答案1

得分: 2

尝试使用这个代码:

  1. HttpHeaders headers = new HttpHeaders();
  2. headers.setBearerAuth(accessToken);
英文:

try with this

  1. HttpHeaders headers = new HttpHeaders();
  2. headers.setBearerAuth(accessToken);

huangapple
  • 本文由 发表于 2023年7月6日 13:49:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/76625854.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定