错误:当您请求 Google 颁发访问令牌时发生“redirect_uri_mismatch”。
下面是React客户端代码。
const googleLogin = useGoogleLogin({
flow: "auth-code",
onSuccess: async (codeResponse) => {
console.log(codeResponse);
const tokens = await axios.post("http://localhost:4000/api/auth/google", {
code: codeResponse.code,
});
console.log(tokens);
},
onError: (errorResponse) => console.log(errorResponse),
});
以下代码用于使用从客户端收到的身份验证代码来获取访问令牌。
@Post("google")
async googleAuth(@Body() body: { code: string }) {
try {
const data = await axios.post("https://oauth2.googleapis.com/token", {
client_id: setting.GOOGLE_CLIENT_ID,
client_secret: setting.GOOGLE_CLIENT_SECRET,
code: body.code,
redirect_uri: "http://localhost:4000/api/auth/google/redirect",
grant_type: "authorization_code",
});
console.log(data);
return data.data; //
} catch (error) {
console.error(error);
return { error: "Internal Server Error" }; //
}
}
我的开发环境是fastify + Nestjs。 我还在Google云平台上编写了重定向uri,但我不知道为什么会出现此错误。我该如何解决它?
我检查了重定向 uri。
我解决了这个问题哈哈...
@Post("google")
async googleAuth(@Body() body: { code: string }) {
const oAuth2Client = new OAuth2Client(setting.GOOGLE_CLIENT_ID, setting.GOOGLE_CLIENT_SECRET, "postmessage");
const { tokens } = await oAuth2Client.getToken(body.code);
const ticket = await oAuth2Client.verifyIdToken({
idToken: tokens.id_token,
audience: setting.GOOGLE_CLIENT_ID,
});
const profile = ticket.getPayload();
console.log(tokens);
console.log(profile);
// try {
// const data = await axios.post("https://oauth2.googleapis.com/token", {
// code: body.code,
// client_id: setting.GOOGLE_CLIENT_ID,
// client_secret: setting.GOOGLE_CLIENT_SECRET,
// redirect_uri: "http://localhost:4000/api/auth/google/redirect",
// grant_type: "authorization_code",
// });
// console.log(data);
// return data.data; //
// } catch (error) {
// console.error(error);
// return { error: "Internal Server Error" }; //
// }
}