首页 > 解决方案 > OAuth2:如何获取令牌?

问题描述

我收到此错误

RequestError:错误:参数错误,options.body

发送请求后。我在 API 中看到了这一点:

grant_type = partner
partner_id = partner id
partner_secret = partner secret

这是源代码:

getToken() {
  let data = {
    grant_type: 'partner',
    partner_id: config.id,
    partner_secret: config.secret,
  };
  const url = config.url;
  return this.postRequest(url, data)
    .then((result) => {
      console.log(result);
      if (result) {
        console.log(result);
        return result;
      }
    })
    .catch((err) => console.log(err));
}

postRequest(url, data) {
  const options = {
    uri: url,
    method: 'POST',
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    body: data,
  };
  return request(options);
}

此代码应返回如下令牌:

{
   "access_token":"2YotnFZFEjr1zCsicMWpAA",
   "token_type":"bearer",
   "expires_in":1119,
   "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA" 
}

代码有什么问题?

标签: javascriptnode.jsoauth-2.0request-promise

解决方案


数据应该是一个查询字符串!

  getToken() {
    let data = {
      grant_type: 'partner',
      partner_id: 'config.id',
      partner_secret: 'config.secret',
    };
    data = querystring.stringify(data);
    const url = config.url;
    return this.postRequest(url, data)
      .then((result) => {
      if (result) {
        console.log(result);
        return result;
      }
      })
      .catch((err) => console.log(err));
  }

推荐阅读