0

我正在尝试使用 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 访问令牌,我得到了正确的结果。

4

0 回答 0