javascript - 如何使用 express、node、javascript 从 ebay API 获取 OAuth token

标签 javascript node.js express oauth ebay-api

从 eBay 获得 Oauth token 需要什么样的请求和响应组合?什么是 runname?我需要哪些 header 才能让 eBay 满意?

最佳答案

在尝试让 Ebay 的 oauth 给我一个访问 token 这令人沮丧的三天之后,我终于解决了这个问题。由于文档很痛苦,而且几乎没有在线帮助,我决定在这里发布我的解决方案,希望它能帮助其他人。我不擅长 StackOverflow,所以如果我需要改进格式,请告诉我。

app.get("/login/ebay", (req, res) => {
res.redirect(`https://auth.sandbox.ebay.com/oauth2/authorize?client_id=DeanSchm-TestApp-SBX-b843acc90-fd663cbb&redirect_uri=Dean_Schmid-DeanSchm-TestAp-kqmgc&response_type=code`
  );
});

您需要做的第一件事是重定向到此 URL。

格式是这样的

https://auth.sandbox.ebay.com/oauth2/authorize?client_id=&redirect_uri=&response_type=code

还有一个 scope 属性,但我还不明白,我得到了一个没有 is 的 token 。

该 URL 会将您带到 eBay 登录页面。如果您使用的是沙箱,则需要创建一个沙箱用户并使用沙箱凭据登录。

登录后,eBay 会将您重定向到您选择的 URL。您在此处输入要重定向到的 URL。

Oauth Accepted URL

它位于通过您的应用程序从 Ebay 获取 token 下的 ebay 开发人员部分。

这个 URL 可以是任何东西。您只需在 node 或 express 或其他任何方式中处理它,因为一旦有人登录该 URL,他们就会前往。

我是这样处理的

app.get("/auth/ebay/callback", (req, res) => {
  axios("https://api.sandbox.ebay.com/identity/v1/oauth2/token", {
    method: "post",
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
      Authorization:
        "Basic " +
        btoa(
          `client public key:client secret keys`
        )
    },
    data: qs.stringify({
      grant_type: "authorization_code",
      // parsed from redirect URI after returning from eBay,
      code: req.query.code,
      // this is set in your dev account, also called RuName

      redirect_uri: "Dean_Schmid-DeanSchm-TestAp-kqmgc"
    })
  })
    .then(response => console.log(response))
    .catch(err => console.log(err));
});

我遇到的一些陷阱。

  • 确保授权中“Basic”后有空格 标题。
  • bota 是一个 3rd 方库,它使用 base 64 对您的公共(public)和 秘钥。有很多方法可以做到这一点。我只是这样做是因为我偷了一堆代码。
  • 使用 Axios 时,请求主体称为 data 但使用 fetch 和其他 方法,它可能被称为其他东西,例如 body 或 param
  • 由于来自 ebay 的重定向,Axios 方法在 get 请求中 默认为 http 获取。
  • ebay 现在使用 https。确保您正在使用 沙盒网址

关于javascript - 如何使用 express、node、javascript 从 ebay API 获取 OAuth token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244736/

相关文章:

javascript - 检查列表是否部分匹配其他列表,除了 javascript 中的顺序

javascript - 所有异步 forEach 回调完成后的回调

javascript - 如何使用 JSON.parse 反序列化嵌套缓冲区

node.js - 在nodejsexpresssocket.io中设置 session 数据

node.js - 无法从 session Express 获取用户 ID

javascript - 双反斜杠在节点中打印相同的内容

javascript - 如何使用 JavaScript 更改网址

javascript - EasyDropDown.js 和链接

javascript - 带有无声 ajax 调用的 PayPal 快速结帐安全性

javascript - 如何在 Express Nodejs 上提取路由名称(路径)(在调用期间,从 req 中)