代码之家  ›  专栏  ›  技术社区  ›  Joshua Foxworth

下一个-身份验证:将图像从配置文件拉入会话

  •  0
  • Joshua Foxworth  · 技术社区  · 2 年前

    我正在使用next Auth构建一个next.js应用程序。我正在使用谷歌、脸书、github和推特。在这些情况中的每一种情况下,与用户相关联的缩略图都包括在返回的配置文件中。但是,它和配置文件的任何其他部分都不包含在会话中。仅包括姓名、电子邮件和角色。

    如何将缩略图或配置文件的任何其他部分传递到会话?

    这是[…nexttauth].js文件中的代码

    FacebookProvider({
      profile(profile) {
        console.log('Profile Facebook: ', profile)
    
        return {
          ...profile,
          role: 'client'
          thumbnail: profile?.picture?.url
        }
      },
      clientId: process.env.FACEBOOK_ID,
      clientSecret: process.env.FACEBOOK_Secret
    }),
    

    请注意,图片应包含在个人资料的其他部分中,但只有姓名、电子邮件和角色才能显示出来。即使我手动设置它,它也不会通过。

    1 回复  |  直到 2 年前
        1
  •  0
  •   Matthias    2 年前

    我没有本地版本的facebook设置,但过去我对Cognito做过类似的事情,编辑会话回调并在那里做我想做的事情。

    然而,需要注意的是,根据OAuth提供商的不同,一些细节在第一次登录后就不可用了——我特别想到了苹果,但只是需要注意。

    https://next-auth.js.org/configuration/callbacks 是文档中的位。

    你可能想要这样的东西:

    NextAuth({
        providers: [
    FacebookProvider({
      clientId: process.env.FACEBOOK_ID,
      clientSecret: process.env.FACEBOOK_Secret
    }),
        ],
        callbacks: {
          session: async function ({ session, token }) {
            return {
    // see if photo url is available here
    
              ...session,
            };
          },
        },
      })