我使用Django OAuth Toolkit创建了一个django OAuth服务器。
我设置正确的代码,当我按以下方式使用CURL时:
curl -X POST -d "grant_type=password&username=geethpw&password=abcabcabc" -u"wHsGgpsHZyw8ghnWbEPZC8f4AZLgJIPmoo50oNWp:ZQcXeQWnae0gmX0SMi6Xn6puBnhiphR2M80UC6ugmffbrUd66awhbguYgxtQ1ufahJZehj4RlGjYu06fHkVgO15TURttSozj27nshl0AhFfCVzUKqTDubBimTSsK4yDS" http://localhost:8000/o/token/
我收到回复:
{"access_token": "glzwHLQNvUNQSOU5kFAoopgJxiNHcW", "token_type": "Bearer", "expires_in": 36000, "refresh_token": "5k6jvCd2UxaRUGHKONC2SqDukitG5Y", "scope": "read write groups"}Geeths-MacBook-Pro:~ geethwijewickrama$
Geeths-MacBook-Pro:~ geethwijewickrama$
这是预期的。
但是当我尝试邮递员做同样的事情时,我总是得到:
{
"error": "unsupported_grant_type"
}
我的标题是:
Content-Type:application/x-www-form-urlencoded
如果我删除此标题,我会得到:
{
"error": "invalid_client"
}
如何在邮递员中测试我的API?
答案 0 :(得分:1)
你的邮递员身体应该是这样的:
grant_type: <grant_type>
client_id: <client_id>
client_secret: <client_secret>
username: <username>
password: <password>
尝试使用这些Bulkedit,希望这有帮助(希望您已注册应用程序以获取client_id和client_secret)
答案 1 :(得分:0)
从JS的django-oauth-toolkit获取令牌:
async function getToken () {
let res = await fetch("https://<your_domain>/o/token/", {
body: new URLSearchParams({
grant_type: 'password',
username: '<user_name>',
password: '<user_pass>',
client_id: '<client_app_id>',
client_secret: '<client_pass>'
}),
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
method: "POST"
})
return res.json();
}
console.log(await getToken());
P.S。我无法通过“ Content-Type”:“ application / json” 来获取令牌,不确定为什么(django-oauth-toolkit文档对此一无所知)。