javascript “当发送带有Got值的令牌请求时,令牌请求必须指定'grant_type”

0yycz8jy  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(123)

我正在使用JavaScript进行API编程来监控URL的健康检查。这是AppDynamics中的API监控。需要使用GOT库。
我正在检查HTTP请求的响应。

const assert = require("assert");

(async() => {
  var url = "https://example.com/oauth2/v1/token";
  var headers = {
    'Accept': 'application/json',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'Basic xyz'
  };
  var payload = {
    'grant_type': 'password',
    'scope': 'okta.groups.read okta.users.read',
    'username': 'userid',
    'password': 'xxxxx'
  };
  var response = await client.post(url, {
    headers: headers,
    json: payload,
  })
  console.log(response.statusCode);
  console.log(response.statusMessage);
  console.log(response.body);

})();

我看到下面的答案。
{“error”:“invalid_request”,“error_description”:“令牌请求必须指定'grant_type'。有效值:[password,authorization_code]"}
我确实在代码中明确提到了'grant_type': 'password'和payload变量。我承认,我是JavaScript新手,但我看了很多在线示例,但仍然无法弄清楚,为什么got库不识别payload。

3htmauhk

3htmauhk1#

当前代码实际上并没有发送JSON。

var payload = {
    'grant_type': 'password',
    'scope': 'okta.groups.read okta.users.read',
    'username': 'userid',
    'password': 'xxxxx'
  };

应为:

var payload = "{
    'grant_type': 'password',
    'scope': 'okta.groups.read okta.users.read',
    'username': 'userid',
    'password': 'xxxxx'
  }";

相关问题