From e363aadf4c8dbcd3d229b7ed55a1b9b8c29654d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=9E=E5=87=A1=E4=B8=BB=E5=84=BF?= <15541157+extraordinary-lord@user.noreply.gitee.com> Date: Mon, 20 Oct 2025 19:16:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E9=94=AE=E8=BD=AC=E5=8F=91=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/video-share/x/auth/callback/page.tsx | 22 ++ components/common/ShareModal.tsx | 316 +++++++++++++++++++ components/common/TwitterCallbackModal.tsx | 223 +++++++++++++ components/pages/create-to-video2.tsx | 43 ++- lib/env.ts | 14 + 5 files changed, 614 insertions(+), 4 deletions(-) create mode 100644 app/api/video-share/x/auth/callback/page.tsx create mode 100644 components/common/ShareModal.tsx create mode 100644 components/common/TwitterCallbackModal.tsx diff --git a/app/api/video-share/x/auth/callback/page.tsx b/app/api/video-share/x/auth/callback/page.tsx new file mode 100644 index 0000000..21bc270 --- /dev/null +++ b/app/api/video-share/x/auth/callback/page.tsx @@ -0,0 +1,22 @@ +'use client'; + +import { useEffect } from 'react'; +import { useRouter } from 'next/navigation'; + +export default function TwitterAuthCallbackPage() { + const router = useRouter(); + + useEffect(() => { + // 此页面主要是为了 Next.js 路由捕获回调 URL。 + // 在 ShareModal 检测到参数后会打开 TwitterCallbackModal。 + // 重定向到主页面或相关仪表板页面。 + // 参数将由 ShareModal 接收处理。 + router.push('/movies?twitterCallback=true'); + }, [router]); + + return ( +
处理 Twitter 授权回调...
++ Choose a platform to share your video +
++ 视频链接: {project.final_video_url || project.final_simple_video_url || 'N/A'} +
+正在处理 Twitter 授权...
+请稍候,正在验证授权信息
+授权成功!
++ Twitter 授权已完成,可以开始分享视频 +
+ {callbackData && ( ++ 授权 Token: {callbackData.access_token ? '已获取' : '未获取'} +
+授权失败
++ Twitter 授权处理失败,请重试 +
+