邮递员 - 无法使用client_credentials grant_type发送请求

时间:2017-09-08 12:38:49

标签: postman

Image我正在尝试使用Postman工具从Microsoft Graph API获取accessToken。我在Authorization选项卡中尝试使用Type = oauth2.0,以便我可以将此accessToken用于后续的Get,Post请求。

如果grant_type是“授权代码”,那么一切正常。但是当grant_type为 client_credentials 时,邮递员会抛出以下错误

  

从client_credentials流获取访问令牌时出错。不能   发送请求

我查看了DeveloperTools中的Network选项卡,它没有为client_credentials流提交Client_Id,Client_Secret。

问题:如何让 client_credentials grant_type方案获得Postman工作?

我错过了这里的任何一步吗?请指导我..

由于

3 个答案:

答案 0 :(得分:2)

我迟到了,但希望如果其他人在寻找这个,他们可以找到它,因为我们遇到了同样的问题。

前两个答案(https://stackoverflow.com/a/65708126/6772160https://stackoverflow.com/a/50270148/6772160)引导我们朝着正确的方向前进,但我们仍然必须翻译这个才能在 Postman 中正常工作:

正如 Mahmoud 提到的,您可以发送 client_idclient_secret 作为基本身份验证: Basic Auth

不过,主要部分是将 grant_type 处理为 client_credentials。为此,我们输入:

grant_type=client_credentials 在请求正文中。

单击正文 > 选择 x-www-form-urlencoded > 键 = grant_type 和值 = client_credentials

完成后,“正文”选项卡应如下所示: Body Tab

希望有帮助!

答案 1 :(得分:0)

尝试提供以下详细信息:

Request Type: POST
URL: https://XXXXXXXXXXXXXXXXXXXXXXXX/token?grant_type=client_credentials
Authorization: Basic [client_id]:[client_secret]
Content-Type: application/x-www-form-urlencoded

输出应如下所示:

{
    "access_token": "90778b6abce64fc124892ce66f7a8ecd",
    "token_type": "Bearer",
    "expires_in": 60,
    "scope": ""
}

注意:提供[client_id]:[client_secret]作为BASE64Encoded。

答案 2 :(得分:0)

您应该将其作为 rawx-www-form-urlencoded 数据发送,如下例所示:

<块引用>

重要标题>>>> Content-Type: application/x-www-form-urlencoded

var data = "grant_type=client_credentials";

var xhr = new XMLHttpRequest();

xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://########/oauth/v2/token");
xhr.setRequestHeader("Authorization", "Basic ###############");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

xhr.send(data);