Tìm kiếm trang web

typescript - làm thế nào để lấy token với angular 2 (oauth2)


Tôi gặp vấn đề với một dịch vụ trên Angular 2, tôi muốn lấy một token từ một API REST trên Spring, máy chủ đang hoạt động, nếu tôi thực hiện yêu cầu bằng Postman thì nó hoạt động!, nhưng tôi không biết cách thực hiện yêu cầu trên Angular 2, tôi có mã này trên Angular 2

getToken(login:Login)
{
  let headers = new Headers();
  let urlSearchParams = new URLSearchParams();

  // urlSearchParams.append(this.GRANT_TYPE,"client_credentials");
  urlSearchParams.append(this.GRANT_TYPE,"password");
  urlSearchParams.append(this.USERNAME, ""+login.usr);
  urlSearchParams.append(this.PASSWORD, ""+login.pwd);
  urlSearchParams.append("client_id","my-trusted-client");

  //headers.append("Content-Type","application/json");
  headers.append('Content-Type', 'application/x-www-form-urlencoded');
  // headers.append('Authorization', 'Bearer ' + btoa(plainClientCredentials));
  headers.append("Authorization", "Basic "+ btoa("my-trusted-client:secret"));

  console.log(headers);

  let url = `${this.URL_OAUTH}/${this.GET_TOKEN}`;


  let body = urlSearchParams.toString()

  console.log("Esta es la url: "+url+'?'+body);

  return this.http.post( url, body ,{ headers })
  .map(res => {

  console.log(res);
//  return res;
  let token = res.json() && res.json().access_token;

            if (token) {
                // set token property
                this.token = token;

                // store username and jwt token in local storage to keep user logged in between page refreshes
                localStorage.setItem('token', JSON.stringify({token: token}));

                // return true to indicate successful login
                return res;
            } else {
                // return false to indicate failed login
                return false;
            }
  }
  ,error => {

       console.log(error.json());
   });
}

Máy chủ trả cho tôi mã trạng thái 401, tôi không biết cách xây dựng header để gửi yêu cầu tới oauth2