// 调试saveUserInfo GraphQL请求的脚本
|
const fetch = require('node-fetch');
|
|
console.log('=== 调试saveUserInfo GraphQL请求 ===');
|
|
// 测试用的token(请替换为实际的token)
|
const testToken = 'YOUR_TOKEN_HERE'; // 请从小程序控制台获取实际token
|
|
// GraphQL查询
|
const mutation = `
|
mutation SaveUserInfo($input: UserInput!) {
|
saveUserInfo(input: $input) {
|
id
|
name
|
avatar
|
phone
|
gender
|
birthday
|
wxOpenId
|
unionId
|
}
|
}
|
`;
|
|
const variables = {
|
input: {
|
name: "测试用户",
|
phone: "13981970816",
|
gender: "MALE",
|
birthday: "2025-10-07"
|
}
|
};
|
|
async function testSaveUserInfo() {
|
console.log('\n--- 测试参数 ---');
|
console.log('GraphQL Endpoint:', 'http://localhost:8080/api/graphql');
|
console.log('Token:', testToken ? `${testToken.substring(0, 20)}...` : '无');
|
console.log('Variables:', JSON.stringify(variables, null, 2));
|
|
if (!testToken || testToken === 'YOUR_TOKEN_HERE') {
|
console.log('\n❌ 请先设置有效的token');
|
console.log('💡 在小程序开发者工具控制台运行: console.log("token:", wx.getStorageSync("token"))');
|
return;
|
}
|
|
try {
|
console.log('\n--- 发送请求 ---');
|
|
const headers = {
|
'Content-Type': 'application/json',
|
'Authorization': `Bearer ${testToken}`
|
};
|
|
console.log('请求头:', headers);
|
|
const response = await fetch('http://localhost:8080/api/graphql', {
|
method: 'POST',
|
headers: headers,
|
body: JSON.stringify({
|
query: mutation,
|
variables: variables
|
})
|
});
|
|
console.log('\n--- 响应信息 ---');
|
console.log('状态码:', response.status);
|
console.log('状态文本:', response.statusText);
|
|
const responseText = await response.text();
|
console.log('响应内容:', responseText);
|
|
if (responseText) {
|
try {
|
const result = JSON.parse(responseText);
|
|
if (result.errors) {
|
console.log('\n❌ GraphQL错误:');
|
result.errors.forEach((error, index) => {
|
console.log(`错误 ${index + 1}:`, error.message);
|
if (error.extensions) {
|
console.log('扩展信息:', error.extensions);
|
}
|
});
|
}
|
|
if (result.data && result.data.saveUserInfo) {
|
console.log('\n✅ 保存成功:');
|
console.log(JSON.stringify(result.data.saveUserInfo, null, 2));
|
}
|
|
} catch (parseError) {
|
console.log('\n❌ JSON解析失败:', parseError.message);
|
}
|
}
|
|
} catch (error) {
|
console.log('\n❌ 请求失败:', error.message);
|
}
|
}
|
|
// 测试token有效性
|
function testTokenFormat(token) {
|
console.log('\n--- Token格式检查 ---');
|
|
if (!token || token === 'YOUR_TOKEN_HERE') {
|
console.log('❌ 没有提供token');
|
return false;
|
}
|
|
const parts = token.split('.');
|
if (parts.length !== 3) {
|
console.log('❌ Token格式无效(不是JWT格式)');
|
return false;
|
}
|
|
try {
|
const payload = JSON.parse(Buffer.from(parts[1], 'base64').toString());
|
console.log('Token payload:', {
|
userId: payload.userId,
|
phone: payload.phone,
|
exp: payload.exp ? new Date(payload.exp * 1000).toLocaleString() : 'N/A',
|
iat: payload.iat ? new Date(payload.iat * 1000).toLocaleString() : 'N/A'
|
});
|
|
const now = Math.floor(Date.now() / 1000);
|
const isExpired = payload.exp && payload.exp <= now;
|
console.log('Token是否过期:', isExpired);
|
|
return !isExpired;
|
} catch (error) {
|
console.log('❌ Token解析失败:', error.message);
|
return false;
|
}
|
}
|
|
// 执行测试
|
console.log('开始测试...');
|
const isValidToken = testTokenFormat(testToken);
|
|
if (isValidToken) {
|
testSaveUserInfo();
|
} else {
|
console.log('\n🔧 解决步骤:');
|
console.log('1. 在小程序开发者工具控制台获取token:');
|
console.log(' console.log("token:", wx.getStorageSync("token"))');
|
console.log('2. 将获取到的token替换脚本中的 YOUR_TOKEN_HERE');
|
console.log('3. 重新运行此脚本');
|
}
|