Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 Баг: Не удаётся получить токен #7

Closed
Fatonndev opened this issue Jun 14, 2022 · 4 comments
Closed

🐛 Баг: Не удаётся получить токен #7

Fatonndev opened this issue Jun 14, 2022 · 4 comments
Labels
bug Something isn't working

Comments

@Fatonndev
Copy link

Контекст

Пытаюсь получить токен, не получается. Пытался несколько раз, перепроверял ссылки, ничего. При переходе по выданной ссылке ссылается на то, что отказано в доступе.

изображение

изображение

Версия библиотеки

No response

Язык

JavaScript

Затронутые секции API

Auth

@Fatonndev Fatonndev added the bug Something isn't working label Jun 14, 2022
@AlexXanderGrib
Copy link
Owner

AlexXanderGrib commented Jun 15, 2022

У YooMoney некоторые права токена конфликтуют друг с другом и эти конфликты очень плохо задокументированы. Могу дать только 2 совета

  1. Включайте только те права, которые действительно собираетесь использовать
    • Если это токен для кошелька, который принимает деньги, то лучше настройте уведомления о событиях, либо используйте права: operation-history
    • Если это токен для пользователей, т.е плательщиков, чтобы вы могли списывать с них деньги, то нужно только право payment.to-pattern("id") или payment.to-account("wallet"), о них ниже
  2. Для дачи токену права на отправку платежей используйте права
    • payment.to-pattern("id"), где id можно найти по примеру из документации. Пример использования: Перевод на QIWI Кошелёк
    • payment.to-account("wallet"), где wallet это номер кошелька на который требуется переводить. Подробнее

@AlexXanderGrib AlexXanderGrib changed the title 🐛 Баг: 🐛 Баг: Не удаётся получить токен Jun 15, 2022
@AlexXanderGrib AlexXanderGrib pinned this issue Jun 15, 2022
@Fatonndev
Copy link
Author

Я пытался не получать все права сразу, пытался вообще без них, то же самое писало. В итоге получил токен вручную и без Oauth2.

@AlexXanderGrib
Copy link
Owner

Как вы получили токен без oauth2?

@Fatonndev
Copy link
Author

В настройках приложения адрес и адрес редиректа ставим рандомный.

const needle = require("needle") // Подключаем Needle для запросов. Можно axios, вообще без разницы
const clientId = "clientId" // Создаем константу с нашим client_id.

const scopes = [
   // Тут права
   "account-info"
]

const postDataAuthorize = {
   client_id: clientId,
   response_type: "code",
   redirect_uri: "https://example.com",
   scope: scopes
}

needle.post('https://yoomoney.ru/oauth/authorize', postDataAuthorize, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }, (err, resp) => {
   console.log(resp.body) // выводим ответ.
})

Нам нужно перейти по этой (которую выдаст этот код) ссылке из браузера (делать нужно все быстро, потому что ссылка живет 1 минуту).
В случае успеха нас перебросит на ссылку которую мы указали в параметре redirect_uri.

Там в query будет временный токен, через него можно уже получить вечный токен

const needle = require("needle") // Подключаем Needle для запросов. Можно axios, вообще без разницы
const clientId = "clientId" // Создаем константу с нашим client_id.

const postDataToken = {
   code: "your_token", // Сюда временный токен
   client_id: clientId,
   grant_type: "authorization_code",
   redirect_uri: " "
}

needle.post(`https://yoomoney.ru/oauth/token`, postDataToken, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' }}, (err, resp) => {
   console.log(resp.body)
})

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants