微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Angular 发送令牌的 POST 时出现 401 错误

如何解决使用 Angular 发送令牌的 POST 时出现 401 错误

想知道我做错了什么。我正在尝试请求令牌以开始使用 Angular 应用程序内的 API。我已经成功地使用了您提供的 nodeJS SDK,但想弄清楚如何使用 Angular 自己完成它是一个额外的挑战,因为我不精通 OAuth 的东西。显然我使用的 Client Id 和 secret 是不同的,但想避免在此处发布它们

httpOptions = {
    headers: new HttpHeaders({
      'Content-Type':  'application/x-www-form-urlencoded'
    })
  };
data = "grant_type=client_credentials&client_id={1234567897}&client_secret={123456}"


  getAmadeusAuthToken(): Observable<any> {
let headers = new HttpHeaders();
headers.append('Content-Type','application/x-www-form-urlencoded');
return this.http.post('https://test.api.amadeus.com/v1/security/oauth2/token',this.data,this.httpOptions)
  }

我也尝试将正文格式化为不同的:

data = {
grant_type: 'client_credentials',client_id: '1234567897',client_secret: '123456',

}

也试过这个:

data = "grant_type=client_credentials&client_id=1234567897&client_secret=123456"

但我总是得到同样的错误

code: 38187
error: "invalid_client"
error_description: "Client credentials are invalid"
title: "Invalid parameters"

message: "Http failure response for https://test.api.amadeus.com/v1/security/oauth2/token: 

401 Unauthorized"
name: "HttpErrorResponse"
ok: false
status: 401
statusText: "Unauthorized"
url: "https://test.api.amadeus.com/v1/security/oauth2/token"

为了确保我没有输入错误的客户端 ID 或 Secret,我在您提供的 nodeJS SDK 中放入了相同的 ID 并且它没有任何问题。任何形式的帮助将不胜感激。我确定我在发布请求时做错了。

解决方法

我在通过 api 测试器运行后最终弄清楚了。 Angular HTTP 对 IMO 不是很有帮助,无论如何,对于将来可能遇到问题的任何人来说,这里是解决方案,在需要重构之前快速而肮脏:

httpOptions = {
headers: new HttpHeaders({
  'Content-Type':  'application/x-www-form-urlencoded'
})
  };


dataString = "grant_type=client_credentials&client_id= 1234567897&client_secret= 123456"

  getAmadeusAuthToken(): Observable<any> {
    return this.http.post('https://test.api.amadeus.com/v1/security/oauth2/token',this.dataString,this.httpOptions)
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。