NextAuth授权跳转Twitter应用后无法返回,如何阻止该跳转?
解决NextAuth Twitter(X)授权跳转至本地应用的问题
要阻止Android和iOS Chrome中Twitter授权时跳转至本地应用,核心是强制Twitter使用网页版授权流程,避免其检测设备上的本地应用并唤起。你可以通过修改NextAuth的TwitterProvider配置,添加自定义授权参数实现:
修改后的配置代码
import type { NextAuthConfig } from "next-auth"; import TwitterProvider from "next-auth/providers/twitter"; import { adapter } from "@/app/lib/prisma"; export const config = { adapter: adapter, trustHost: true, theme: { logo: "/favicon.png", }, providers: [ TwitterProvider({ clientId: process.env.AUTH_TWITTER_ID ?? "", clientSecret: process.env.AUTH_TWITTER_SECRET ?? "", allowDangerousEmailAccountLinking: true, // 添加自定义授权参数,强制网页授权 authorization: { params: { force_login: true, }, }, }), ], callbacks: { authorized({ request, auth }) { const { pathname } = request.nextUrl; if (pathname === "/middleware-example") return !!auth; return true; }, jwt({ token, trigger, session }) { if (trigger === "update") token.name = session.user.name; return token; }, }, basePath: "/api/auth", } satisfies NextAuthConfig; export const { handlers, auth, signIn, signOut } = NextAuth(config);
原理说明
force_login=true是Twitter OAuth的官方参数,它会强制用户进入网页版登录界面,跳过本地应用唤起逻辑,同时确保用户必须输入账号密码(即使已在浏览器登录),彻底避免跳转至Twitter本地应用。- 该参数对Android和iOS的Chrome浏览器生效,不会影响iOS其他浏览器的正常授权流程。
内容的提问来源于stack exchange,提问作者Obsesie
相关产品推荐
相关产品推荐

