Невозможно получить доступ к неявному потоку предоставления Reddit Api из-за идентификатора фрагмента перед строкой запроса

#oauth-2.0 #reddit #implicit-grant #reddit-access-token

#oauth-2.0 #Reddit #неявное предоставление #reddit-access-token

Вопрос:

Я довольно усердно искал существующий ответ на этот вопрос, потому что у меня такое чувство, что я допустил глупую ошибку, поэтому, пожалуйста, дайте мне знать, если об этом уже спрашивали, и я его не нашел.

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

Вот процесс, который я пытаюсь использовать:

Я прошу пользователя открыть этот URL (удалена личная информация):

https://www.reddit.com/api/v1/authorize?client_id=[client_id]amp;response_type=tokenamp;state=[random_state_data]amp;redirect_uri=http://localhost:3000amp;scope=read

Но когда пользователь перенаправляется после авторизации, он переходит на URL, который выглядит следующим образом:

http://localhost:3000/#access_token=[token]amp;token_type=beareramp;state=[random_state_data]amp;expires_in=3600amp;scope=read

Проблема в том, что токен доступа находится в запросе? строка после идентификатора фрагмента (#), поэтому я не могу получить к ней доступ с сервера, размещенного на порту 3000. Я допустил ошибку в том, как я обработал аутентификацию? Или это что-то более тонкое?

Заранее спасибо за вашу помощь и дайте мне знать, если вам нужна дополнительная информация или я допустил ошибку, задав этот вопрос.

Ответ №1:

Оказывается, это классический случай, когда в руководстве чего-то не хватает.

В информации о неявном потоке предоставления Reddit:

ответ на этот запрос, в случае успеха, будет закодирован в виде фрагмента со следующими значениями:

Таким образом, это было полностью преднамеренное поведение, которое я просто не уловил. Я думаю, мне просто нужно будет проделать некоторую магию Javascript, чтобы получить токен из фрагмента на мой сервер.

Извините, если я отнял у кого-то время.