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

Getting a 401 error when sending a POST for token, using Angular

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

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 或密码,我将相同的客户端 ID 或密码放在了您提供的 nodeJS SDK 中,并且它没有任何问题。任何形式的帮助将不胜感激。我确定我对 post 请求做错了什么。

我在 运行 之后通过 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)
  }