const axios = require('axios'); const BASE_URL = 'http://localhost:8080/api'; async function testJwtParsing() { console.log('=== 测试JWT token解析功能 ===\n'); try { // 使用一个已知的有效token进行测试 // 这个token应该是之前生成的匿名用户token const testToken = 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiItNzE5NzI4IiwiaWF0IjoxNzU5ODQzNzI5LCJleHAiOjE3NTk5MzAxMjksIndqb3BlbmlkIjoidGVzdF9vcGVuaWRfMTc1OTg0MzcyOTI5NSJ9.invalid'; // 这只是示例,需要使用真实token console.log('1. 测试使用有效token查询用户信息...'); // 先测试userProfile查询 const userProfileResponse = await axios.post(`${BASE_URL}/graphql`, { query: ` query { userProfile { id name phone wxOpenId gender birthday } } ` }, { headers: { 'Authorization': `Bearer ${testToken}`, 'Content-Type': 'application/json' } }); if (userProfileResponse.data.data?.userProfile) { console.log('✅ 用户信息查询成功'); const user = userProfileResponse.data.data.userProfile; console.log('- 用户ID:', user.id); console.log('- 姓名:', user.name); console.log('- 电话:', user.phone); console.log('- wxOpenId:', user.wxOpenId); } else { console.log('❌ 用户信息查询失败'); console.log('错误:', userProfileResponse.data.errors); } // 测试saveUserInfo console.log('\n2. 测试保存用户信息...'); const saveUserResponse = await axios.post(`${BASE_URL}/graphql`, { query: ` mutation SaveUserInfo($input: SaveUserInfoInput!) { saveUserInfo(input: $input) { success message user { id name phone wxOpenId gender birthday } } } `, variables: { input: { name: '测试JWT解析', phone: '13900139000', gender: 'MALE', birthday: '1990-01-01' } } }, { headers: { 'Authorization': `Bearer ${testToken}`, 'Content-Type': 'application/json' } }); if (saveUserResponse.data.data?.saveUserInfo?.success) { console.log('✅ 保存用户信息成功'); const user = saveUserResponse.data.data.saveUserInfo.user; console.log('- 用户ID:', user.id); console.log('- 姓名:', user.name); console.log('- 电话:', user.phone); console.log('- wxOpenId:', user.wxOpenId); console.log('- 性别:', user.gender); console.log('- 生日:', user.birthday); } else { console.log('❌ 保存用户信息失败'); console.log('错误:', saveUserResponse.data.errors || saveUserResponse.data.data?.saveUserInfo?.message); } } catch (error) { console.error('❌ 测试过程中发生错误:', error.response?.data || error.message); // 如果是认证错误,说明token无效,我们需要先获取一个有效的token if (error.response?.status === 401) { console.log('\n尝试获取新的token...'); await getValidTokenAndTest(); } } } async function getValidTokenAndTest() { try { // 尝试通过手机号登录获取token console.log('尝试通过手机号登录获取token...'); const loginResponse = await axios.post(`${BASE_URL}/auth/login`, { phone: '13981970816', verificationCode: '123456' }); if (loginResponse.data.success) { console.log('✅ 登录成功,获得token'); const token = loginResponse.data.token; // 使用这个token测试 await testWithToken(token); } else { console.log('❌ 登录失败:', loginResponse.data.message); } } catch (error) { console.log('❌ 登录过程中发生错误:', error.response?.data || error.message); } } async function testWithToken(token) { console.log('\n使用有效token测试...'); try { const saveUserResponse = await axios.post(`${BASE_URL}/graphql`, { query: ` mutation SaveUserInfo($input: SaveUserInfoInput!) { saveUserInfo(input: $input) { success message user { id name phone wxOpenId gender birthday } } } `, variables: { input: { name: '测试JWT解析(有效token)', phone: '13981970816', gender: 'MALE', birthday: '1990-01-01' } } }, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }); if (saveUserResponse.data.data?.saveUserInfo?.success) { console.log('✅ 使用有效token保存用户信息成功'); const user = saveUserResponse.data.data.saveUserInfo.user; console.log('- 用户ID:', user.id); console.log('- 姓名:', user.name); console.log('- 电话:', user.phone); console.log('- wxOpenId:', user.wxOpenId); } else { console.log('❌ 保存用户信息失败'); console.log('错误:', saveUserResponse.data.errors || saveUserResponse.data.data?.saveUserInfo?.message); } } catch (error) { console.error('❌ 测试过程中发生错误:', error.response?.data || error.message); } } // 运行测试 testJwtParsing();