mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-22 12:13:43 +08:00
feat: remove Google Drive integration, associated hooks, components, API routes, and dependencies.
This commit is contained in:
@@ -1,19 +0,0 @@
|
||||
import { redirect } from 'next/navigation';
|
||||
|
||||
export async function GET() {
|
||||
const CLIENT_ID = process.env.LINUX_DO_CLIENT_ID;
|
||||
const REDIRECT_URI = `${process.env.NEXT_PUBLIC_APP_URL}/api/oauth/callback`;
|
||||
|
||||
if (!CLIENT_ID || !process.env.NEXT_PUBLIC_APP_URL) {
|
||||
return new Response('Missing configuration', { status: 500 });
|
||||
}
|
||||
|
||||
const params = new URLSearchParams({
|
||||
client_id: CLIENT_ID,
|
||||
redirect_uri: REDIRECT_URI,
|
||||
response_type: 'code',
|
||||
scope: 'user', // As per user guide
|
||||
});
|
||||
|
||||
redirect(`https://connect.linux.do/oauth2/authorize?${params.toString()}`);
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
const CLIENT_ID = process.env.LINUX_DO_CLIENT_ID;
|
||||
const CLIENT_SECRET = process.env.LINUX_DO_CLIENT_SECRET;
|
||||
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/x-www-form-urlencoded',
|
||||
},
|
||||
body: new URLSearchParams({
|
||||
client_id: CLIENT_ID,
|
||||
client_secret: CLIENT_SECRET,
|
||||
code,
|
||||
redirect_uri: REDIRECT_URI,
|
||||
grant_type: 'authorization_code',
|
||||
}).toString(),
|
||||
});
|
||||
|
||||
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);
|
||||
redirectUrl.searchParams.set('auth_success', 'true');
|
||||
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 Callback] Error:', error);
|
||||
return NextResponse.redirect(new URL('/settings?error=auth_failed', request.url));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user