Как сообщить веб-интерфейсу, что ваш сервер успешно получил токен доступа

Я изучал поток кода авторизации OAuth 2.0 и пытаюсь написать приложение React с бэкэндом Express, которое отображает то, что пользователь увидит в своем профиле Instagram. Я пытаюсь сделать это с минимальным количеством внешних библиотек (т.е. без использования паспорта-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, но мне не удалось найти документацию о том, как достичь того, что я хочу, без использования сторонних библиотек.

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

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

Зачем вам нужно «дотянуться» до внешнего интерфейса? Он должен проверять код с помощью вашего бэкэнда, поэтому успех ответа говорит ему, был ли он действительным.

jonrsharpe 27.10.2018 19:05

@jonrsharpe, поэтому, если я вас правильно понимаю: владелец ресурса предоставляет разрешение приложению, а URL-адрес перенаправления настроен на возврат к приложению Реагировать, где оно прослушивает код. После получения код отправляется в серверную часть выражать, где он делает запрос POST для обмена кодом для токена доступа. Успех этого вызова определяет, был ли ответ действительным. Это верно? Как это работает с концепцией нескольких пользователей?

coloradocolby 27.10.2018 19:22

Да, это правильно.

jonrsharpe 27.10.2018 19:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
281
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме