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