Как запросить токен доступа у Battle.net OAuth с кодом авторизации?

У меня есть хобби проект, чтобы использовать Battle.net логин. Мне интересно, как я могу получить токен доступа из API после получения кода авторизации.

Это скорее вопрос потока Oauth, чем вопрос battle.net.

В настоящее время я могу успешно авторизовать пользователя для своего приложения, которое зарегистрировано на dev.battle.net, а затем я пытаюсь использовать код авторизации, полученный при входе в Battle.net, для получения токена доступа, отправив запрос https://<region>.battle.net/oauth/token, Однако я продолжаю получать эту ошибку:

{ "error": "unauthorized", "error_description": "An Authentication object was not found in the SecurityContext" }

Я использую расширение почтальона, чтобы отправлять почтовые запросы на этот URI. Я аутентифицирую свой запрос с помощью своего идентификатора клиента и секрета. Я передаю redirect_uri ( https://localhost/), granty_type (authorization_code), код (код, возвращенный с предыдущего шага авторизации). Однако я продолжаю получать ошибку выше.

Я не мог найти много о Battle.net онлайн. Есть и другие справочные статьи, но я не могу найти свой путь. Хотите знать, если вы можете помочь мне с этим простым делом. Мне просто интересно, что я здесь пропускаю.

Вот документация: https://dev.battle.net/docs/read/oauth

https://localhost/ добавлен в настройки приложения моей учетной записи разработчика. Скриншот почтового запроса почтальона

1 ответ

Решение

Я снова решил эту проблему, попробовав практически все комбинации во вселенной:)

Шаги, чтобы применить:

  • Не используйте один и тот же токен авторизации для разных испытаний токена доступа, они недействительны
  • Всегда используйте https на каждом тестируемом домене, включая localhost, вы также должны иметь значение redirect_uri.
  • При запросе токена из кода авторизации, полученного на предыдущем шаге, вы должны использовать "базовую аутентификацию" в заголовке вашего запроса POST.
  • Это один из самых важных: для запроса токена, передайте redirect_uri, ключ клиента и секрет в качестве параметров формы POST для аутентифицированного запроса. Это интересно, потому что это уже аутентифицированный запрос; зачем мне снова передавать свой секрет? В любом случае, вот как это работает.

Вот полный текст: http://hakanu.net/oauth/2017/01/26/complete-guide-of-battle-net-oauth-api-and-login-button/

Это рабочий прототип: https://owmatch.me/

Благодарю.

Другие вопросы по тегам