工作 Ebay Oauth Node Express JavaScript

dea*_*mid 5 javascript api oauth express ebay-api

经过三天令人沮丧的尝试让 E-bayOAuth给我一个访问令牌,我终于解决了。由于文档很痛苦,而且网上几乎没有帮助,我决定在这里发布我的解决方案,希望它能帮助其他人。我不擅长 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`
  );
});
Run Code Online (Sandbox Code Playgroud)

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

格式是这样的

https://auth.sandbox.ebay.com/oauth2/authorize?client_id=<your_client_id>&redirect_uri=<your_redirect_uri>&response_type=code
Run Code Online (Sandbox Code Playgroud)

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

url会将您带到e-bay 登录页面。如果您使用的是sandbox,则需要创建一个sandbox用户并使用沙箱凭据登录。

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

Oauth 接受的 URL

它位于通过您的应用程序从 e-bay 获取令牌下的 e-bay 开发人员部分。

这个网址可以是任何东西。你只需要在 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));
});
Run Code Online (Sandbox Code Playgroud)

一些让我着迷的陷阱。

  • 确保在authorization 标题中的“基本”之后有一个空格。

  • bota是一个 3rd 方库,可以对base64您的公钥和私钥进行编码。有很多方法可以做到这一点。我这样做是因为我偷了一堆代码。

  • 随着axios请求主体被称为数据,但在取等方法也可以被称为别的东西状体或param -Theaxios方法是GET请求,因为从电子海湾默认重定向到一个http ge`t。

  • e-bay 现在使用https.

  • 确保您使用的是沙箱网址