В настоящее время я интегрирую некоторые сторонние API, где они используют oauth, и мое приложение представляет собой стек Mern. В настоящее время я реализовал поток oauth только в бэкэнде. Вот пример моего кода.
когда пользователь нажимает кнопку для аутентификации от клиента, я обрабатываю перенаправление с сервера
export const getAuthCode = async (req: Request, res: Response): Promise<void> => {
res.redirect(OAUTH_URL)
}
когда сторонний API перенаправляет, я анализирую код и запрашиваю доступ и токен обновления
export const getAccessAndRefreshToken = async (req: Request, res: Response): Promise<void> => {
const { code } = req.query
try {
// *options contain client, secret, redirect uri and code*
const { data } = await axios.post(OAUTH_URL, options)
console.log(data) // *contains access and refresh tokens*
// save access and refresh token to httponly cookie
// redirect user
} catch (err) {
console.log(err)
}
}
вопрос №1 — это правильный способ реализации потока oauth?
вопрос №2 — как хранить токен доступа и обновления? в настоящее время я устанавливаю токены доступа и обновления в файле cookie httpOnly, у меня нет возможности отправить идентификатор пользователя в getAuthCode от клиента, чтобы сохранить токен обновления в пользовательской таблице в базе данных, так как это просто нажатие кнопки.