使用AJAX请求OAuth2令牌
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用AJAX请求OAuth2令牌相关的知识,希望对你有一定的参考价值。
我正在尝试使用AJAX来请求令牌。这只会在localhost上用于发出请求。我有代码:
$.ajax({
url: "TOKEN URL HERE",
beforeSend: function(xhr) {
xhr.setRequestHeader("grant_type", "client_credentials");
xhr.setRequestHeader("client_id", "ENTER CLIENT ID");
xhr.setRequestHeader("client_secret", "ENTER CLIENT SECRET");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Accept", "application/json");
},
dataType: "json",
//content-Type: "application/json",
type: "POST",
success: function(response) {
token = response.access_token;
expiresIn = response.expires_in;
},
error: function(errorThrown) {
alert(errorThrown.error);
}
});
但是,它不起作用。这是正确的方法还是我的参数不正确? (或者是使用AJAX / JQuery / JS无法实现的OAuth2令牌请求)
答案
确定,grant_type,client_id,client_secret应该通过标头而不是有效负载传递?
尝试从标题中删除它们(左接受,仅限内容类型),然后使用其余参数添加“data”属性。
像这样的东西:
$.ajax({
url: "TOKEN URL HERE",
beforeSend: function(xhr) {
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Accept", "application/json");
},
dataType: "json",
data: {
client_id: "ENTER CLIENT ID",
client_secret: "ENTER CLIENT SECRET",
grant_type: "client_credentials"
},
type: "POST",
success: function(response) {
token = response.access_token;
expiresIn = response.expires_in;
},
error: function(errorThrown) {
alert(errorThrown.error);
}
});
以上是关于使用AJAX请求OAuth2令牌的主要内容,如果未能解决你的问题,请参考以下文章
OAuth2 - 检索令牌时 OPTIONS 请求的状态 401
oauth2 spring-security 如果您在请求令牌或代码之前登录