Вернуть токен доступа к Twitch API с помощью узла js

Я разрабатываю расширение для Google Chrome, в котором мне нужно аутентифицировать пользователя на Twitch. Согласно https://github.com/justintv/Twitch-API/blob/master/authentication.md, я зарегистрировал приложение, чтобы получить client_id, и мое расширение Chrome открывает следующую ссылку:

https://api.twitch.tv/kraken/oauth2/authorize
    ?response_type=token
    &client_id=[your client ID]
    &redirect_uri=[your registered redirect URI]
    &scope=[space separated list of scopes]

После принятия моего приложения пользователи перенаправляются по этой ссылке:

https://[your registered redirect URI]/#access_token=[an access token]&scope=[authorized scopes]

[ваш зарегистрированный URI перенаправления] — это ссылка на мой сервер node js. Мне нужно сохранить информацию о access_token, но я не знаю, как получить доступ к элементам после '#'. URL-адрес запроса или его параметры не содержат их.


person Nucktrooper    schedule 14.10.2016    source источник


Ответы (1)


В документации уже есть объяснение чуть ниже строки, которую вы разместили:

Обратите внимание, что токен доступа находится во фрагменте URL, а не в строке запроса, поэтому он не будет отображаться в HTTP-запросах к вашему серверу. Доступ к фрагментам URL-адресов можно получить из JavaScript с помощью document.location.hash.

Браузер/клиент удаляет элементы фрагмента перед отправкой запроса на сервер. Вы должны загрузить страницу, создать небольшой сценарий javascript и получить значения от клиента. Затем вы можете решить, как обрабатывать данные. Например, вы можете отправить запрос ajax на свой сервер.

person Stavros Zavrakas    schedule 14.10.2016
comment
Спасибо, я не понял, что мне нужно было использовать его на стороне клиента, поэтому он не работал. - person Nucktrooper; 14.10.2016
comment
@Nucktrooper Небольшой скрипт при загрузке страницы, который будет получать значения с помощью document.location.hash, а затем запускать запрос к одной из ваших служб, чтобы вы могли сохранить accessToken, выполнит эту работу за вас. Если это помогло вам, вы можете принять ответ :) - person Stavros Zavrakas; 14.10.2016