接下来如何使用nuxt/auth与oauth2交换访问令牌的代码



我使用"@nuxtjs/auth-next": "5.0.0-1618898588.9655d0e"进行身份验证,我想使用它集成谷歌。我在nuxt.config.js 中设置了以下代码

google: {
clientId: process.env.GOOGLE_CLIENT_ID_LATEST,
redirectUri: 'http://localhost:3000/account/login',
responseType: 'code',
accessType: 'offline',
grantType: 'authorization_code',
codeChallengeMethod: 'S256'
}

和登录页面

loginWithGoogle() {
this.$auth.loginWith('google')
}

在我点击谷歌登录后,谷歌请求被发出并重定向到重定向Uri,查询附加为http://localhost:3000/account/login?state=3OyMNy2ODj&code=4%2F0AY0e-g6YkRJFyVCVxo8Ph2-WXpTYjKbxyuAE3r6F1PB_pt8W9QlRgdtxpEeKxfzYvX6g&scope=email%20profile%20openid%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&authuser=0&prompt=consent

现在我需要再次请求谷歌访问令牌,我不确定如何做。

您需要用访问令牌交换授权码。除了身份验证代码,您还需要发送oauth2客户端机密和客户端id。

示例:

curl -d https://accounts.google.com/o/oauth2/token?client_id=<YOUR_CLIENT_ID>&client_secret=<YOUR_CLIENT_SECRET>&code=<AUTH_CODE_RECEIVED>A&grant_type=authorization_code&redirect_uri=http://localhost:3000/account/login

我知道这个问题已经发送了很长时间,但我有这个问题,我花了很大的时间来解决这个问题,这是我在上的解决方案

nuxt.config.js

auth: {
strategies: {
google: {
clientId: '81409153991-q2fm4735fcqe7fdlldo1d05k6i69n61a.apps.googleusercontent.com',
codeChallengeMethod: 'S256',
responseType: 'code id_token token',
redirectUri: 'http://localhost:3000/callback',
endpoints: {
authorization: 'https://accounts.google.com/o/oauth2/auth',
token: 'https://oauth2.googleapis.com/token',
userInfo: 'https://www.googleapis.com/oauth2/v3/userinfo',
logout: 'https://accounts.google.com/logout'
},
scope: ['openid', 'profile', 'email']
}
},
redirect: {
login: '/login',
logout: '/',
callback: '/callback',
home: '/'
}
}

相关内容

  • 没有找到相关文章

最新更新