Я реализовал Discord Oauth2, чтобы мои пользователи могли войти на мой сайт, пройдя аутентификацию через Discord. В течение нескольких месяцев все работало замечательно, а теперь внезапно перестало работать.
В соответствии с инструкциями Disca oauth2, https://discordapp.com/developers/docs/topics/oauth2#shared-resources, Я могу успешно получить код доступа, предназначенный для обмена на токен доступа. Однако, когда я пытаюсь получить токен доступа, я получаю ошибку «invalid_client».
Сначала я достигаю этой конечной точки:
https://discordapp.com/api/oauth2/authorize?client_id=${process.env.CLIENT_ID}&redirect_uri=http%3A%2F%2Flocalhost%3A5000%2Flogin%2Fdiscord%2Fcallback&response_type=code&scope=identify%20email%20gdm.join
, который успешно возвращает следующее:
http://localhost:5000/login/discord/callback?code={some_access_code}
Затем код доступа отправляется обратно на дискорд для получения токена доступа. Вот код, который не работает:
export function getDiscordAccessToken(accessCode, call) {
const redirect = call === 'login' ? process.env.DISCORD_LOGIN_REDIRECT : process.env.DISCORD_CONNECT_REDIRECT
return new Promise((resolve, reject) => {
axios
.post(
`https://discordapp.com/api/oauth2/token?client_id=${process.env.DISCORD_CLIENTID}&client_secret=${process.env.DISCORD_SECRET}&grant_type=authorization_code&code=${accessCode}&redirect_uri=${redirect}&scope=identify%20email%20gdm.join`
)
.then(res => {
resolve(res.data)
})
.catch(err => {
// log error to db
console.log("Here is your error: ", err.response)
reject(err.response)
})
})
}
Этот код работал месяцами без проблем. Затем внезапно он перестал работать. Я даже проверил журналы изменений Discord, которые можно найти здесь, https://discordapp.com/developers/docs/change-log,, но не нашел ссылки на изменения аутентификации.
Любая помощь, которую вы можете оказать, очень ценится!