我正在尝试使用 Google Provider 实现 NextAuth 以使用 Youtube Data API 发出请求。但是,在使用会话回调时,访问令牌似乎是错误的,因为我无法使用该令牌发出任何请求。使用 JWT 回调时,访问令牌似乎是正确的。有人经历过吗?我想使用会话回调,但没有找到获得 JWT 回调给我的相同访问令牌的方法。
编辑 1:不确定这是否会有所帮助,因为它更多的是关于 NextAuth 的会话访问令牌和 JWT 访问令牌是否不同的一般问题,但这里是回调选项:
const callbacks = {
async session(session, user) {
// Add property to session, like an access_token from a provider.
const data = await fetch(
`https://www.googleapis.com/youtube/v3/channels?access_token=${user.accessToken}&part=snippet%2CcontentDetails%2Cstatistics%2Cid&mine=true`,
{
method: 'GET'
}
);
const response = await data.json();
const newSession = user;
newSession.accessToken = session.accessToken;
newSession.expires = session.expires;
newSession.channelName = response.items[0].snippet.title;
newSession.channelId = response.items[0].id;
return newSession;
}
}
这是使用会话访问令牌的响应:
{
error: {
code: 403,
message: 'The request is missing a valid API key.',
errors: [ [Object] ],
status: 'PERMISSION_DENIED'
}
}
使用 JWT 访问令牌,我得到了正确的结果。