Работающий Ebay Oauth Node Express JavaScript - PullRequest
3 голосов
/ 04 октября 2019

После трех разочаровывающих дней, когда я пытался заставить Эбая дать мне токен доступа, я наконец-то решил его. Так как документы - это боль, а помощь в Интернете практически не помогает, я решил опубликовать здесь свое решение в надежде, что оно поможет другим. Я плохо разбираюсь в 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, но я пока не понимаю, и я получил токен безИтак, меххх.

Этот URL ведет вас на страницу входа в eBay. Если вы используете «песочницу», вам нужно создать пользователя «песочницы» и войти в систему с учетными данными «песочницы».

Как только вы войдете в систему, ebay перенаправит вам URL по вашему выбору. Вы вводите URL, на который хотите перенаправиться сюда.

Oauth Accepted URL

Он находится в разделе разработчиков eBay в разделе «Получение токена от Ebay через ваше приложение».

Этот URL может быть любым. вам просто нужно обработать его в узле, выражении или чем-то еще, потому что, как только кто-то подписывается в этом 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 - сторонняя библиотека, которая на базе 64 кодирует ваш открытый и секретный ключи. Есть много способов сделать это. Я просто сделал это так, потому что я украл кучу кода.

  • В случае с axios тело запроса называется data, а в fetch и других методах оно может называться как-нибудь еще, например body или param -AxiosМетод находится в запросе get, потому что перенаправление с ebay по умолчанию на http get.
  • ebay теперь использует https.
  • Убедитесь, что вы используете URL песочницы
...