Я изучал поток кода авторизации OAuth 2.0 и пытаюсь написать приложение React с бэкэндом Express, которое отображает то, что пользователь увидит в своем профиле Instagram. Я пытаюсь сделать это с минимальным количеством внешних библиотек (т.е. без использования паспорта-js) и без добавления базы данных.
Это мой поток на данный момент:
Владелец ресурса нажимает тег <a> в приложении React (порт 3000), который перенаправляет их на конечную точку /auth/instagram моего сервера Express (порт 8000).
res.redirect(AUTHORIZATON_URL) отправляет их на сервер авторизации Instagram.
Владелец ресурса соглашается, и код авторизации отправляется обратно на предварительно определенный URL-адрес перенаправления /auth/instagram/callback с кодом авторизации, установленным в качестве параметра запроса.
Я удаляю код авторизации с URL-адреса и делаю запрос POST к https://api.instagram.com/oauth/access_token, чтобы получить токен доступа
Теперь, когда у меня есть токен доступа, как мне связаться с интерфейсом React, чтобы сообщить им, что все работает и что пользователь успешно аутентифицирован?
Из того, что я читал, здесь вступает в игру идея сеансов и файлов cookie, но мне не удалось найти документацию о том, как достичь того, что я хочу, без использования сторонних библиотек.
В конце концов, я бы хотел, чтобы мое приложение поддерживало одновременный просмотр своих профилей несколькими пользователями. Поскольку я предполагаю, что передача токена доступа во внешний интерфейс побеждает цель безопасного извлечения его на серверной части, я предполагаю, что мне каким-то образом нужно будет передать идентификатор сеанса между интерфейсом и серверной частью, который каким-то образом связан с токеном доступа.
Мы очень ценим любые идеи относительно того, какими должны быть мои следующие шаги, а также любые статьи или документацию, которые вы сочтете нужными. Спасибо!
@jonrsharpe, поэтому, если я вас правильно понимаю: владелец ресурса предоставляет разрешение приложению, а URL-адрес перенаправления настроен на возврат к приложению Реагировать, где оно прослушивает код. После получения код отправляется в серверную часть выражать, где он делает запрос POST для обмена кодом для токена доступа. Успех этого вызова определяет, был ли ответ действительным. Это верно? Как это работает с концепцией нескольких пользователей?
Да, это правильно.





Поскольку вы выполняете аутентификацию OAuth на стороне сервера, вам необходимо передать некоторый параметр в redirect_uri, идентифицирующий сеанс пользователя (см .: Добавление параметра запроса в Instagram auth redirect_uri не работает?); Когда uri перенаправления вызывается с сервера авторизации, вы узнаете, какой пользователь был авторизован. Чтобы уведомить браузер, есть два варианта: 1) Уведомить клиента с помощью веб-сокетов; 2) Получить состояние от клиента, используя функцию срабатывания таймера;
Зачем вам нужно «дотянуться» до внешнего интерфейса? Он должен проверять код с помощью вашего бэкэнда, поэтому успех ответа говорит ему, был ли он действительным.