【问题标题】:Generating OAuth 2.0 Access Token with JavaScript使用 JavaScript 生成 OAuth 2.0 访问令牌
【发布时间】:2020-08-10 04:27:43
【问题描述】:

我正在尝试通过 OneLogin 的 API 生成 OAuth 2.0 令牌。我通读了他们的documentation,并能够设置 Postman 进行测试,并成功获取访问令牌。

但是,当我尝试通过 JavaScript fetch 以编程方式执行相同的请求时,它不起作用。

代码:

function getAuthToken() {
  // POST Request (To get Access Token)
  var url = 'https://api.us.onelogin.com/auth/oauth2/v2/token?grant_type=client_credentials' 

  var postOptions = {
    'method': 'POST',
    'headers': {
      'Content-Type': 'application/json; charset=utf-8',
      'Authorization' : 'client_id:xxxx, client_secret:xxxx'
    },
    'redirect': 'follow'
  };
 var authToken = UrlFetchApp.fetch(url, postOptions);
}

错误

错误消息表明 grant_type 丢失,但我将 POST 请求正文中的 grant_type 参数作为字符串(原始)传递,如文档需要,我仍然收到错误。我什至尝试将'{"grant_type": "client_credentials"}' 与“body”参数内联,但仍然收到相同的错误消息。

有什么想法吗?提前谢谢!

【问题讨论】:

    标签: api google-apps-script oauth-2.0 access-token onelogin


    【解决方案1】:

    您正在为参数使用 JSON 编码。访问令牌请求必须使用application/x-www-form-urlencoded 编码发送表单参数。

    在此处查看 OAuth2 标准:https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3

    【讨论】:

    • 谢谢!我只需要在 URL 的末尾添加 ?grant_type=client_credentials' 就可以了。
    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    相关资源
    最近更新 更多