Как сообщить веб-интерфейсу, что ваш сервер успешно получил токен доступа - PullRequest
0 голосов
/ 27 октября 2018

Я изучаю поток кода авторизации OAuth 2.0 и пытаюсь написать приложение React с бэкэндом Express, которое отображает то, что пользователь увидит в своем профиле Instagram. Я пытаюсь сделать это с минимальными внешними библиотеками (то есть без использования passport-js) и без привлечения базы данных в смесь.

Это мой поток на данный момент:

  1. Владелец ресурса щелкает тег <a> в приложении React (порт 3000), который перенаправляет их на конечную точку /auth/instagram моего сервера Express (порт 8000)

  2. res.redirect(AUTHORIZATON_URL) отправляет их на сервер авторизации Instagram

  3. Владелец ресурса согласен, и код авторизации отправляется обратно на предопределенный URL-адрес перенаправления /auth/instagram/callback с кодом авторизации, установленным в качестве параметра запроса

  4. Я удаляю код авторизации из URL и делаю POST запрос к https://api.instagram.com/oauth/access_token, чтобы получить токен доступа

Теперь, когда у меня есть токен доступа, как мне обратиться к интерфейсу React, чтобы сообщить им, что все работает и что пользователь успешно прошел аутентификацию?

Из того, что я прочитал, именно здесь вступает в игру идея сессий и файлов cookie, но мне не повезло найти документацию о том, как достичь того, чего я хочу, без привлечения сторонних библиотек.

В конце я хотел бы, чтобы мое приложение поддерживало одновременный просмотр их профилей несколькими пользователями. Поскольку я представляю, что передача токена доступа во внешний интерфейс лишена цели безопасного извлечения его на бэкэнде, я предполагаю, что мне как-то понадобится передать идентификатор сеанса между внешним интерфейсом и бэкэндом, который каким-то образом связан с токеном доступа.

Будем очень благодарны за любые идеи относительно моих следующих шагов, а также за любые статьи или документацию, которые вы считаете подходящими. Спасибо!

1 Ответ

0 голосов
/ 27 октября 2018

Поскольку вы выполняете аутентификацию OAuth на стороне сервера, вам нужно передать некоторый параметр в redirect_uri, идентифицирующий сеанс пользователя (см .: Добавление параметра запроса в Instagram auth redirect_uri не работает? ); Когда URI перенаправления вызывается с сервера авторизации, вы узнаете, какой пользователь был авторизован. Для уведомления браузера есть два варианта: 1) уведомить клиента с помощью веб-сокетов; 2) Извлечь состояние из клиента с помощью функции, запускаемой по таймеру;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...