Мне нужно отправить почтовый запрос на сервер авторизации Spring Boot OAuth 2, чтобы получить токен JWT? Используя Postman, я получил токен, и сервер аутентификации работает нормально. Но с Angular мне сложно определить правильный формат почтового запроса?
Это текущий метод, который я использую.
login() {
const url = 'http://localhost:9090/oauth/token';
const data = {
'grant_type': 'password',
'username': 'username',
'password': 'password'
};
const reqH = new HttpHeaders({
'Content-Type': 'application/x-www-urlencoded',
'Authorization': 'Basic ' + btoa('client-id' + ':' + 'secret'),
'grant_type': 'password',
'username': 'administrator%40divinedragon.com',
'password': 'password'
});
return this.http.post('http://localhost:9090/oauth/token', data, {
headers: reqH
});
}
при использовании этого метода я получаю следующую ошибку.
HttpErrorResponse {headers: HttpHeaders, status: 400, statusText: "OK", url: "http://localhost:9090/oauth/token", ok: false, …},
error: {error: "invalid_request", error_description: "Missing grant type"}
Помощь очень ценится!
сталкивается с той же проблемой. у кого-нибудь есть ответ на это?





let headers: HttpHeaders = new HttpHeaders();
headers = headers.append('Content-Type', 'application/x-www-urlencoded');
headers = headers.append('Authorization' : 'Basic ' + btoa('client-id' + ':' + 'secret');
headers = headers.append('grant_type': 'password', 'username': 'administrator%40divinedragon.com', 'password': 'password');
По-прежнему появляется та же ошибка, mate: error: {error: "invalid_request", error_description: "Missing grant type"}
Вы должны отправить запрос, например: this.http.post (url, body, {headers});
var body = "grant_type=password&username=username&password=password&client_id=clientid";
return this.http.post(`${this.oauth.URL}/oauth/token`, body, {
headers: new HttpHeaders({
Authorization: "Basic +token",
"Content-type": "application/x-www-form-urlencoded;charset=utf-8"
})
});
Я думаю, вы также указываете имя пользователя и пароль в заголовке и теле. это сработало для меня, как показано ниже:
login(username, password) {
const headers = {
'Authorization': 'Basic ' + btoa('devglan-client:$2a$04$e/c1/RfsWuThaWFCrcCuJeoyvwCV0URN/6Pn9ZFlrtIWaU/vj/BfG'),
'Content-type': 'application/x-www-form-urlencoded'
}
const body = new HttpParams()
.set('username', username)
.set('password', password)
.set('grant_type', 'password');
this.http.post('http://localhost:8080/' + 'oauth/token', body, {headers})
.subscribe(data => this.setToken(data),
err => alert('invalid Creadtilas'));
}
Привет, пожалуйста, какие-нибудь идеи, что this.setToken (data) делает в методе подписки? Будем признательны за быстрый фрагмент кода. Спасибо.
Спасибо, что использовали new HttpParams().set(), чтобы мои параметры работали отлично
вы решили проблему. не могли бы вы, пожалуйста, как вы решили это.