node.js — Как получить токен OAuth из API eBay, используя экспресс, узел, javascript

Как получить OAuth-токен из ebay API, используя Express, Node, Javascript

После трех разочаровывающих дней, когда я пытался заставить Эбая дать мне токен доступа, я наконец-то решил его. Так как документы — это боль, а помощь в Интернете практически не помогает, я решил опубликовать здесь свое решение в надежде, что оно поможет другим. Я плохо разбираюсь в StackOverflow, поэтому дайте мне знать, если мне нужно улучшить форматирование.

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

Первое, что вам нужно сделать, это перенаправить на этот URL.

Формат такой

 https://auth.sandbox.ebay.com/oauth2/authorize?client_id={amp}amp;redirect_uri={amp}amp;response_type=code 

Существует также свойство scope, но я этого еще не понимаю, и я получил токен без меня.

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

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

URL принятый Oauth

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

Этот URL может быть любым. вам просто нужно обработать его в узле, выражении или чем-то еще, потому что, как только кто-то подписывается в этом URL, он направляется туда.

Вот как я справился с этим

 app.get("/auth/ebay/callback", (req, res) ={amp}gt; { 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 ={amp}gt; console.log(response)) .catch(err ={amp}gt; console.log(err)); }); 

Несколько ошибок, которые достали меня.

  • Убедитесь, что в заголовке авторизации есть место после «Basic».
  • bota — сторонняя библиотека, которая на базе 64 кодирует ваш открытый и секретный ключи. Есть много способов сделать это. Я просто сделал это так, потому что украл кучу кода.
  • В Axios тело запроса называется data, но с помощью fetch и других методов оно может называться как-нибудь иначе, например body или param.
  • Метод Axios находится в запросе get из-за перенаправления с ebay по умолчанию на http get.
  • Ebay теперь использует https. Убедитесь, что вы используете песочницу URL
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector