После трех разочаровывающих дней, когда я пытался заставить Эбая дать мне токен доступа, я наконец-то решил его. Так как документы - это боль, а помощь в Интернете практически не помогает, я решил опубликовать здесь свое решение в надежде, что оно поможет другим. Я плохо разбираюсь в 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.
Формат такой:this
https://auth.sandbox.ebay.com/oauth2/authorize?client_id=&redirect_uri=&response_type=code
Существует также свойство scope, но я пока не понимаю этого, и я получил токен без него.
Этот URL-адрес ведет вас на eBayстраница авторизации. Если вы используете «песочницу», вам нужно создать пользователя «песочницы» и войти в систему с учетными данными «песочницы».
Как только вы войдете в систему, eBay перенаправит вас на выбранный вами URL. Вы вводите 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));
});
Aнесколько ошибок, которые достали меня.
- Убедитесь, что в заголовке авторизации у вас есть пробел после "Basic".
- bota - сторонняя библиотека, в которой base 64 кодирует ваш открытый и секретный ключи. ,Есть много способов сделать это. Я просто сделал это так, потому что я украл кучу кода.
- В Axios тело запроса называется data, а в fetch и других методах оно может называться как-нибудь еще, например body или param
- Метод Axios находится в запросе get из-за перенаправления с ebay по умолчанию на http get.
- ebay теперь использует https. Убедитесь, что вы используете песочницу URL