获取未经授权的_client(缺少有效的授权标头)以回报 Twitter 授权 wuth next-auth

Has*_*has 6 twitter request-headers twitter-oauth reactjs next-auth

我正在尝试添加一个 Twitter 授权按钮,让我获得用户 oauth_token 和 oauth_token_secret,这允许我们的工具代表用户执行操作。

import NextAuth from "next-auth";
import TwitterProvider from "next-auth/providers/twitter";

export const authOptions = {
  // Configure one or more authentication providers
  providers: [
    TwitterProvider({
      clientId: process.env.TWITTER_CLIENT_ID,
      clientSecret: process.env.TWITTER_CLIENT_SECRET,
      version: "2.0", // opt-in to Twitter OAuth 2.0
      authorization: {
        url: "https://twitter.com/i/oauth2/authorize",
        params: {
          grant_type: "authorization_code",
          scope: "users.read tweet.read tweet.write like.read list.read",
        },
      },
    }),
    // ...add more providers here
  ],
  session: {
    strategy: "jwt",
  },
  callbacks: {
    jwt: ({ token, account, ...props }) => {
      console.log({ token, account, props }, props?.profile?.data);

   
      return token;
    },
    session: async ({ session, user, token }) => {
      session.user = user;
      session.token = token;
      return session;
    },
  },
  secret: process.env.NEXTAUTH_SECRET,
  debug: true,
};
export default NextAuth(authOptions);


Run Code Online (Sandbox Code Playgroud)

这是我当前使用下一个身份验证提供程序的代码片段。

如果我选择应用程序类型

在此输入图像描述

Twitter 的本机应用程序可以进行身份​​验证,但不会返回客户端的秘密。这就是为什么使用 Web 应用程序可以提供机密的客户详细信息。

但用它进行处理会返回无效的标头错误。 在此输入图像描述

小智 0

我遇到了同样的问题。虽然我不能 100% 确定这是否能解决这个问题,但我可以通过重置 Twitter 客户端 ID 和 Secret 的环境变量,然后重新启动开发服务器来解决这个问题。

如果这不能解决问题,请告诉我,并乐意进一步探索。