mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-14 16:23:43 +08:00
debug: Add detailed logging to the OAuth callback and account settings components.
This commit is contained in:
@@ -4,7 +4,10 @@ export async function GET(request: NextRequest) {
|
||||
const searchParams = request.nextUrl.searchParams;
|
||||
const code = searchParams.get('code');
|
||||
|
||||
console.log('[OAuth Callback] Received callback with code:', code ? 'exists' : 'missing');
|
||||
|
||||
if (!code) {
|
||||
console.error('[OAuth Callback] No code provided');
|
||||
return NextResponse.redirect(new URL('/settings?error=no_code', request.url));
|
||||
}
|
||||
|
||||
@@ -13,11 +16,13 @@ export async function GET(request: NextRequest) {
|
||||
const REDIRECT_URI = `${process.env.NEXT_PUBLIC_APP_URL}/api/oauth/callback`;
|
||||
|
||||
if (!CLIENT_ID || !CLIENT_SECRET || !process.env.NEXT_PUBLIC_APP_URL) {
|
||||
console.error('[OAuth Callback] Missing configuration');
|
||||
return NextResponse.redirect(new URL('/settings?error=config_missing', request.url));
|
||||
}
|
||||
|
||||
try {
|
||||
// 1. Exchange code for token
|
||||
console.log('[OAuth Callback] Exchanging code for token...');
|
||||
const tokenResponse = await fetch('https://connect.linux.do/oauth2/token', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -31,17 +36,23 @@ export async function GET(request: NextRequest) {
|
||||
});
|
||||
|
||||
const tokenData = await tokenResponse.json();
|
||||
console.log('[OAuth Callback] Token response status:', tokenResponse.status);
|
||||
console.log('[OAuth Callback] Token data:', { hasToken: !!tokenData.access_token });
|
||||
|
||||
if (!tokenData.access_token) {
|
||||
console.error('[OAuth Callback] No access token in response:', tokenData);
|
||||
throw new Error('Failed to get access token');
|
||||
}
|
||||
|
||||
// 2. Get User Info
|
||||
console.log('[OAuth Callback] Fetching user info...');
|
||||
const userResponse = await fetch('https://connect.linux.do/api/user', {
|
||||
headers: { Authorization: `Bearer ${tokenData.access_token}` },
|
||||
});
|
||||
|
||||
const userData = await userResponse.json();
|
||||
console.log('[OAuth Callback] User response status:', userResponse.status);
|
||||
console.log('[OAuth Callback] User data:', { id: userData.id, username: userData.username });
|
||||
|
||||
// 3. Redirect with data
|
||||
const redirectUrl = new URL('/settings', request.url);
|
||||
@@ -49,9 +60,10 @@ export async function GET(request: NextRequest) {
|
||||
redirectUrl.searchParams.set('token', tokenData.access_token);
|
||||
redirectUrl.searchParams.set('user', JSON.stringify(userData));
|
||||
|
||||
console.log('[OAuth Callback] Redirecting to settings with auth data');
|
||||
return NextResponse.redirect(redirectUrl);
|
||||
} catch (error) {
|
||||
console.error('OAuth Error:', error);
|
||||
console.error('[OAuth Callback] Error:', error);
|
||||
return NextResponse.redirect(new URL('/settings?error=auth_failed', request.url));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,15 +24,28 @@ export function AccountSettings() {
|
||||
const token = searchParams.get('token');
|
||||
const userStr = searchParams.get('user');
|
||||
|
||||
console.log('[AccountSettings] Checking URL params:', {
|
||||
authSuccess,
|
||||
hasToken: !!token,
|
||||
hasUser: !!userStr,
|
||||
});
|
||||
|
||||
if (authSuccess && token && userStr) {
|
||||
try {
|
||||
const userData = JSON.parse(userStr) as LinuxDoUser;
|
||||
console.log('[AccountSettings] Parsed user data:', {
|
||||
id: userData.id,
|
||||
username: userData.username,
|
||||
});
|
||||
|
||||
clearHistory();
|
||||
clearSearchHistory();
|
||||
login(userData, token);
|
||||
|
||||
console.log('[AccountSettings] Login complete, redirecting...');
|
||||
router.replace('/settings');
|
||||
} catch (e) {
|
||||
console.error('Failed to parse user data', e);
|
||||
console.error('[AccountSettings] Failed to parse user data:', e);
|
||||
}
|
||||
}
|
||||
}, [searchParams, login, clearHistory, clearSearchHistory, router]);
|
||||
|
||||
Reference in New Issue
Block a user