From 0b3a7b1d793c72c0cfb951f1334452991e42df25 Mon Sep 17 00:00:00 2001 From: 12975 <1297598740@qq.com> Date: Thu, 29 Jan 2026 19:07:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=8C=85=E6=8B=AC?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E3=80=81=E6=B3=A8=E5=86=8C=E3=80=81GitHub/Gi?= =?UTF-8?q?tee=20OAuth=E9=9B=86=E6=88=90=E5=8F=8A=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E9=85=8D=E7=BD=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/GiteeCallback/GiteeCallback.tsx | 63 +++++++++++++++++++++++ src/pages/GiteeCallback/index.ts | 1 + src/pages/Login/Login.css | 23 +++++++++ src/pages/Login/Login.tsx | 9 ++++ src/router/index.tsx | 5 ++ src/services/authService.ts | 34 ++++++++++++ 6 files changed, 135 insertions(+) create mode 100644 src/pages/GiteeCallback/GiteeCallback.tsx create mode 100644 src/pages/GiteeCallback/index.ts diff --git a/src/pages/GiteeCallback/GiteeCallback.tsx b/src/pages/GiteeCallback/GiteeCallback.tsx new file mode 100644 index 0000000..65726f0 --- /dev/null +++ b/src/pages/GiteeCallback/GiteeCallback.tsx @@ -0,0 +1,63 @@ +import { useEffect, useState } from 'react'; +import { useNavigate, useSearchParams } from 'react-router-dom'; +import { Icon } from '@iconify/react'; +import authService from '../../services/authService'; +import '../GitHubCallback/GitHubCallback.css'; + +export default function GiteeCallback() { + const navigate = useNavigate(); + const [searchParams] = useSearchParams(); + const [error, setError] = useState(''); + + useEffect(() => { + const handleCallback = async () => { + const errorParam = searchParams.get('error'); + const accessToken = searchParams.get('access_token'); + const refreshToken = searchParams.get('refresh_token'); + + if (errorParam) { + setError('Gitee 授权失败'); + setTimeout(() => navigate('/login'), 2000); + return; + } + + // 如果URL中有token,直接保存 + if (accessToken && refreshToken) { + authService.setTokens({ + access_token: accessToken, + refresh_token: refreshToken, + expires_in: 3600, + }); + navigate('/home'); + return; + } + + // 没有必要的参数 + setError('缺少授权信息'); + setTimeout(() => navigate('/login'), 2000); + }; + + handleCallback(); + }, [searchParams, navigate]); + + return ( +
{error}
+正在返回登录页...
+ > + ) : ( + <> +请稍候...
+ > + )} +