Как запросить токен доступа у 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/
Благодарю.