首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Next.js上使用NextAuth实现Facebook登录?

如何在Next.js上使用NextAuth实现Facebook登录?
EN

Stack Overflow用户
提问于 2022-05-25 11:49:18
回答 1查看 1.8K关注 0票数 1

我用Auth2实现了一个正常的( NextAuth )登录,但是现在,我不得不切换到OIDC登录,并且似乎无法正确地实现它。我收到以下错误消息:

[token_endpoint must be configured on the issuer](https://next-auth.js.org/errors#callback_oauth_error token_endpoint must be configured on the issuer TypeError: token_endpoint must be configured on the issuer)

这是我在Facebook提供商上的配置:

代码语言:javascript
运行
复制
export default NextAuth({
  providers: [
    FacebookProvider({
      idToken: true,
      clientId: process.env.FBID,
      clientSecret: process.env.FBSECRET,
      wellKnown: "https://www.facebook.com/.well-known/openid-configuration",
      token: {
        url: "https://www.facebook.com/v11.0/dialog/oauth",
        params: { scope: "openid email public_profile" },
      },
    }),
  ],
  secret: "sunSAd2RkCajg2DLR3+5MfsinFwws8ZuzfPm2C+FXkc=",
});
EN

回答 1

Stack Overflow用户

发布于 2022-06-27 12:30:00

试试这段代码

代码语言:javascript
运行
复制
providers: [
  FacebookProvider({
    idToken: true,
    clientId: process.env.FACEBOOK_CLIENT_ID,
    clientSecret: process.env.FACEBOOK_CLIENT_SECRET,

    authorization: {
      url: "https://www.facebook.com/v11.0/dialog/oauth",
      params: {
        client_id: process.env.FACEBOOK_CLIENT_ID,
        scope: "openid email",
        response_type: "code",
      },
    },

    // wellKnown: "https://www.facebook.com/.well-known/openid-configuration/",
    token: {
      url: "https://graph.facebook.com/oauth/access_token",
      async request(context) {
        try {
          // request to https://graph.facebook.com/oauth/access_token?code=""&client_id=""&redirect_uri=""&client_secret=""
          const response = await axios.get(this.url, {
            params: {
              code: context.params.code,
              client_id: context.provider.clientId,
              redirect_uri: context.provider.callbackUrl,
              client_secret: context.provider.clientSecret,
            },
          });

          const tokens = response.data;
          return { tokens };
        } catch (error) {
          throw error;
        }
      },
    },
  }),
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72377081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档