0

我使用 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?

4

2 回答 2

2

你的邮递员身体应该是这样的:

grant_type: <grant_type>
client_id: <client_id>
client_secret: <client_secret>
username: <username>
password: <password>

使用这些尝试 Bulkedit,希望这会有所帮助(希望您已注册应用程序以获取 client_id 和 client_secret)

于 2017-03-28T06:42:26.757 回答
1

从 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());

您的客户端应用程序授权授权类型应为:“基于资源所有者密码” oauth 客户端应用程序:身份验证授权类型

PS我无法通过"Content-Type": "application/json"获得令牌,不知道为什么(django-oauth-toolkit 文档对此只字未提)。

于 2019-05-14T07:39:13.227 回答