Я пытаюсь сохранить пользователя GitHub OAuth, зарегистрированного в базе данных моего пользователя. Я использую модуль аутентификации Nuxt.js для функциональности.
Настройка аутентификации в Nuxt.config.js
auth: {
strategies: {
local: {
token: {
property: 'data.token',
},
user: {
property: 'data',
},
endpoints: {
login: { url: 'login', method: 'post' },
user: { url: 'byToken', method: 'get' },
logout: { url: 'logout', method: 'get' },
},
},
github: {
clientId: process.env.GITHUB_CLIENT_ID,
clientSecret: process.env.GITHUB_CLIENT_SECRET,
},
},
},
Страница Login.vue
<template>
<button class="social-icons" @click="githubLogin()">
Login with Github
</button>
</template>
<script>
export default {
methods: {
async githubLogin() {
try {
const response = await this.$authApi.loginWithGithub()
} catch (err) {
console.log(err)
}
},
},
}
</script>
Файл плагинов аутентификации
export default function (context, inject) {
inject('authApi', {
loginWithGithub,
})
async function loginWithGithub() {
try {
await context.$auth.loginWith('github')
// Get the required info from the user object set in vuex
const user = context.$auth.user //This is undefined
const userInfo = {
oAuthId: user.id,
username: user.login,
name: user.name,
bio: user.bio,
email: user.email,
profilePhoto: user.avatar_url,
isOAuthUser: true,
}
// My api server to store the passed userinfo to db
const response = await context.$axios.post('/socialRegister', userInfo)
return response
} catch (err) {
setErrorMessage(err)
}
}
}
Теперь, когда я нажимаю кнопку входа в систему (Login.vue) с помощью GitHub, модуль успешно устанавливает токен доступа, полученный от GitHub, в локальное хранилище, а пользователя - в состояние. Но, как вы можете видеть в коде (файл плагина auth.js) после loginWith ('github') context.$auth.user
не определено. Теперь мой вопрос в том, как я могу получить доступ к информации о пользователе, чтобы я мог переслать эту информацию на свой сервер api для хранения пользователя в БД.