node.js - 如何使用 Ebay 的刷新 token 获取访问 token ?

标签 node.js openid-connect ebay-api ebay-sdk

我正在尝试从我从 eBay 获得的刷新 token 中获取 access_token。我正在使用 Axios,但我不断收到 不支持在请求中获取授权类型 错误。

  const refreshToken = 'xxxxxxxx';
  const appID = 'xxxxxxx';
  const certID = 'xxxxxx';
  const scopes = [
        'https://api.ebay.com/oauth/api_scope',
        'https://api.ebay.com/oauth/api_scope/sell.fulfillment',
        'https://api.ebay.com/oauth/api_scope/sell.account',
        'https://api.ebay.com/oauth/api_scope/sell.inventory'
  ]
  const params = {
    grant_type: 'refresh_token',
    refresh_token: refreshToken,
    'scope': encodeURI(scopes.join(" ")),
    // scope: scopes,
  

const token = Buffer.from(`${appID}:${certID}`);
const URL = 'https://api.ebay.com/identity/v1/oauth2/token'
const { data } = await axios.post(URL, params, {
      'headers': {
        'Authorization': `Basic ${token.toString('base64')}`,
        'Content-Type': 'application/x-www-form-urlencoded',
      },
    })

最佳答案

原来你必须对整个请求主体进行 UriEncode,利用
Node 的 querystring.encode() :

const qs = require("querystring")
...
const { data } = await axios.post(URL, qs.encode(params), {
  'headers': {
    'Authorization': `Basic ${token.toString('base64')}`,
    'Content-Type': 'application/x-www-form-urlencoded',
  },
})

关于node.js - 如何使用 Ebay 的刷新 token 获取访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66744901/

相关文章:

javascript - var app = express(); 有什么用?在创建 Node.Js 应用程序的过程中?

oauth - 您可以在不获取 OAuth 凭据的情况下使用 OpenID Connect 吗?

azure - 用户 AD 身份验证失败时如何导航到自定义访问被拒绝页面(具有 OpenIDConnect Azure AD 身份验证的 .net 3.1 core)

java - 使用 Eclipse 从 eBay 沙盒 WSDL 创建 stub 时出错

javascript - 尽管隐藏了输入 DELETE,为什么我的表单仍然通过 POST 请求?

node.js - NestJS:如何使用自定义装饰器访问 Controller 函数响应?

node.js - 在nodejs中测试后台进程(使用磁带)

asp.net-core - OpenIdConnect access_token 大小和访问声明服务器端

java - BerkeleyDB数据库文件打开(java)

paypal - 如何从eBay交易中获取卖家的PayPal账户