尝试使用 django-oauth-toolkit 使用 fetch 获取访问令牌在使用 jquery 工作时不起作用
Trying to get access token with django-oauth-toolkit using fetch not working while working using jquery
我正在尝试调用端点以在 django 中使用 oauth 生成访问令牌,当我使用 jquery 调用端点时它正在工作,但当我尝试使用 fetch
调用它时它不起作用
这是获取的代码
fetch(`https://<domain>/o/token/`, {
method: 'POST',
body:{
grant_type:'password',
client_id: "<client-id>",
client_secret:"<client-secret>",
username:"<username>",
password:"<password>"
}
})
.then(res => res.json())
.then(res => {console.log(res)});
输出是
{error: 'unsupported_grant_type'}
当我使用 jquery ajax 调用它时,它的工作方式如下
$.post({
url:'https://<domain>/o/token/',
data:{
grant_type:'password',
client_id: "<client-id>",
client_secret:"<client-secret>",
username:"<username>",
password:"<password>"
},
success: function(data){
console.log(data);
}
})
输出是
{access_token: '<access-token>', expires_in: 3600, token_type: 'Bearer', scope: 'read write groups', refresh_token: '<refresh-token>'}
我已经找到解决方法,以防有人遇到同样的问题
in jquery ajax 在下面的代码块中,它将字典 object 转换为查询字符串
var data = "";
for (var x in option.data) {
if (data != "") {
data += "&";
}
data += encodeURIComponent(x)+"="+encodeURIComponent(option.data[x]);
};
option.data = data;
并将 content-type header 设置为
'application/x-www-form-urlencoded; charset=UTF-8'
因此,将用作 jquery ajax 调用的正确获取代码如下所示
fetch(`https://<domain>/o/token/`, {
method: 'POST',
headers: {
"Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8'
},
body:'grant_type=password&client_id=<client-id>&client_secret=<client-secret>&username=<username>&password=<password>'
})
.then(res => res.json())
.then(res => {console.log(res)});
我正在尝试调用端点以在 django 中使用 oauth 生成访问令牌,当我使用 jquery 调用端点时它正在工作,但当我尝试使用 fetch
调用它时它不起作用这是获取的代码
fetch(`https://<domain>/o/token/`, {
method: 'POST',
body:{
grant_type:'password',
client_id: "<client-id>",
client_secret:"<client-secret>",
username:"<username>",
password:"<password>"
}
})
.then(res => res.json())
.then(res => {console.log(res)});
输出是
{error: 'unsupported_grant_type'}
当我使用 jquery ajax 调用它时,它的工作方式如下
$.post({
url:'https://<domain>/o/token/',
data:{
grant_type:'password',
client_id: "<client-id>",
client_secret:"<client-secret>",
username:"<username>",
password:"<password>"
},
success: function(data){
console.log(data);
}
})
输出是
{access_token: '<access-token>', expires_in: 3600, token_type: 'Bearer', scope: 'read write groups', refresh_token: '<refresh-token>'}
我已经找到解决方法,以防有人遇到同样的问题
in jquery ajax 在下面的代码块中,它将字典 object 转换为查询字符串
var data = "";
for (var x in option.data) {
if (data != "") {
data += "&";
}
data += encodeURIComponent(x)+"="+encodeURIComponent(option.data[x]);
};
option.data = data;
并将 content-type header 设置为
'application/x-www-form-urlencoded; charset=UTF-8'
因此,将用作 jquery ajax 调用的正确获取代码如下所示
fetch(`https://<domain>/o/token/`, {
method: 'POST',
headers: {
"Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8'
},
body:'grant_type=password&client_id=<client-id>&client_secret=<client-secret>&username=<username>&password=<password>'
})
.then(res => res.json())
.then(res => {console.log(res)});