'use client'; import { useEffect } from 'react'; import { useRouter } from 'next/navigation'; export default function TwitterAuthCallbackPage() { const router = useRouter(); useEffect(() => { // 解析回调参数 const searchParams = new URLSearchParams(window.location.search); const state = searchParams.get('state'); const code = searchParams.get('code'); // 将回调参数写入 localStorage,供原窗口读取 if (state && code) { try { const payload = { state, code, timestamp: Date.now(), }; localStorage.setItem('twitterAuthCallbackPayload', JSON.stringify(payload)); // 通过变化一个随机标记键,确保触发其它窗口的 storage 事件 localStorage.setItem('twitterAuthCallbackFlag', Math.random().toString(36).slice(2)); } catch { // 忽略本地存储异常 } // 通过 postMessage 通知打开者(如果存在且同源策略允许) try { if (window.opener) { window.opener.postMessage({ type: 'TWITTER_AUTH_CALLBACK', state, code }, window.location.origin); } } catch { } } // 跳回应用页面(原窗口会通过 storage 事件弹出处理弹框) router.push('/movies?twitterCallback=true'); }, [router]); return (

处理 Twitter 授权回调...

); }