【问题标题】:Getting an Access Token with Xml HTTP Request使用 Xml HTTP 请求获取访问令牌
【发布时间】:2018-03-30 15:26:45
【问题描述】:

我在从网站获取 Web 应用程序的访问令牌时遇到了一些问题。下面的回复是

"{"error":"invalid_request","error_description":"The grant type was not specified in the request"}".

我在下面指定了授权类型,但似乎我没有正确格式化请求。

有什么建议吗?

  var getToken = new XMLHttpRequest(); 
  getToken.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
    }
  };
  getToken.open("POST", "https://api2.libcal.com/1.1/oauth/token", true); 
  getToken.send('grant_type=client_credentials','client_id=XXX', 'client_secret=XXXXXXXXXXXXXXXXXXXX');

【问题讨论】:

  • 您可能希望将这些参数设置为查询参数。
  • 您是提供访问令牌的网络服务的开发者吗?如果不是,您应该询问服务提供商哪些是正确的授权类型
  • 该站点的文档说授权类型应该是客户端凭据。我可以使用 Postman 等第三方程序获取访问令牌。

标签: javascript xmlhttprequest access-token


【解决方案1】:

当您执行发布请求以获取访问令牌时,参数应在正文 (JSON) 中发送,如下所示:(我测试过,它工作正常)

  // form data for the post request
  var data = {
    "grant_type":"client_credentials",
    "client_id": "XXX",
    "client_secret": "XXXXXXXXXXXXXXXXXXXX"
  };


  // construct an HTTP request
  var getToken= new XMLHttpRequest();
  getToken.open("POST", "https://api2.libcal.com/1.1/oauth/token", true);
  getToken.setRequestHeader('Content-Type', 'application/json');

  // send the collected data as JSON
  getToken.send(JSON.stringify(data));

【讨论】:

  • 此响应可能为真并正确返回令牌。但是它没有说明在请求被服务器批准后如何访问令牌。如果您能指出如何正确引用对象getToken 以将令牌值保存在变量中?
猜你喜欢
  • 1970-01-01
  • 2015-02-13
  • 2020-04-13
  • 1970-01-01
  • 2019-11-08
  • 1970-01-01
  • 2014-02-17
  • 2015-11-14
  • 2013-10-17
相关资源
最近更新 更多