UNPKG

create-nicsde-next-app

Version:

A CLI tool to create Next.js applications with custom configurations

65 lines (56 loc) 1.98 kB
export async function POST(request: Request) { try { const formData = await request.formData(); const code = formData.get('code'); const access_token_body = new URLSearchParams({ grant_type: 'authorization_code', code: code as string, client_id: process.env.AUTH_CLIENT_ID as string, client_secret: process.env.AUTH_CLIENT_SECRET as string, }); const access_token_url = `${process.env.NEXT_PUBLIC_AUTH_TONGJI_URL}/idp/oauth2/getToken`; const response = await fetch(access_token_url, { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8', }, body: access_token_body, method: 'POST', }); // 先检查响应状态 if (!response.ok) { const errorText = await response.text(); console.error('Token endpoint error:', errorText); return Response.json( { error: 'Token endpoint returned error' }, { status: 400 } ); } // 检查内容类型是否为JSON const contentType = response.headers.get('content-type'); if (!contentType?.includes('application/json')) { const text = await response.text(); console.error('Non-JSON response:', text); return Response.json( { error: 'Invalid response format' }, { status: 400 } ); } const data = await response.json(); if (!data.access_token) { return Response.json( { error: 'Invalid token response' }, { status: 400 } ); } return Response.json({ ...data, token_type: data.token_type || 'Bearer' }); } catch (error) { console.error('Token route error:', error); return Response.json( { error: 'Internal server error' }, { status: 500 } ); } }