Postman 使用邮递员生成访问令牌

Postman 使用邮递员生成访问令牌,postman,django-oauth,Postman,Django Oauth,我已经使用Django REST Frameword和Django oAuth Toolkit编写了用于oauth2身份验证的API,并使用Postman测试了我的API授权过程 我必须发出以下请求 curl -X POST -d "grant_type=password&username=<user>&password=<password>" -u "<client_id>:<client_secret" http://127.0.0.

我已经使用
Django REST Frameword
Django oAuth Toolkit
编写了用于oauth2身份验证的API,并使用
Postman
测试了我的API授权过程

我必须发出以下请求

curl -X POST -d "grant_type=password&username=<user>&password=<password>" -u "<client_id>:<client_secret" http://127.0.0.1:3333/auth/token/

curl-X POST-d“grant_type=password&username=&password=“-u”:curl加密-u参数的值,我们可以使用-v(verbose)选项看到它

因此,要收集头的授权值,请在curl命令中使用-v一次-

$ curl -X POST -d "grant_type=password&username=<user>&password=<password>" -u "client_id:client_secret" http://127.0.0.1:3000 -v
Note: Unnecessary use of -X or --request, POST is already inferred.
* Rebuilt URL to: http://127.0.0.1:3000/
*   Trying 127.0.0.1...
* TCP_NODELAY set 
* Connected to 127.0.0.1 (127.0.0.1) port 3000 (#0)
* Server auth using Basic with user 'client_id'
> POST / HTTP/1.1
> Host: 127.0.0.1:3000
> Authorization: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 55
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 55 out of 55 bytes
< HTTP/1.1 200 OK
< Content-Type: text/plain
< Date: Sat, 19 May 2018 07:09:35 GMT
< Connection: keep-alive
< Transfer-Encoding: chunked
< 
在将这些密钥作为“授权”和值作为“Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=”收集后,您可以通过邮递员在请求的标头中使用它们。“Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=”是使用带有curl的-u“client_id:client_secret”选项生成的加密值


希望这将解决使用邮递员请求的身份验证问题。

要获得完整的邮递员答案,可以通过预请求脚本来完成。客户端id和客户端密码仅使用base64编码方案进行编码。只需执行以下操作:

请注意,client\u id\u client\u secret是一个环境变量。如果您不想这样做,请删除第一行并将您的客户id和secret硬编码到CryptoJS.enc.Utf8.parse('my-trusted-client:mysecret'),其中'my trusted client'是客户id,'mysecret'是客户机密

这是复制/粘贴joy的代码

let keys = pm.environment.get('client_id_client_secret');
let encoded = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(keys));
pm.environment.set("base64_client_id_client_secret", encoded);
现在,创建一个标题并包含您创建的变量:

该图像的值部分:

Basic {{base64_client_id_client_secret}}

现在…只要邮递员布利斯。

有三个选项可以通过POST请求发送数据,1.POST表单正文,2.标题n 3.Url参数。你能写下你的API是如何使用客户端id和客户端机密的吗?然后,我们可以根据你在curl请求
-u
标志中看到的方式添加这些键值对。以及客户端id和se的使用方式正在发送的cret是
client\u id:client\u secret
。其中没有使用名称参数。因此,我认为它是在头中发送的。但是我找不到任何字段来将
client\u id
secret
放在
授权
选项卡和
Headers
选项卡中,并要求键值对。你的意思是
client\u id
作为密钥and
client\u secret
as value?@AnujTBE,我已经更新了答案,检查是否有帮助
Basic {{base64_client_id_client_secret}}