const axios = require('axios');
|
|
console.log('=== 测试sessionKey修复效果 ===');
|
|
async function testSessionKeyFix() {
|
try {
|
// 1. 测试后端wxLogin接口
|
console.log('\n1. 测试后端wxLogin接口...');
|
const loginResponse = await axios.post('http://localhost:8080/api/graphql', {
|
query: `
|
mutation {
|
wxLogin(input: {
|
code: "test_code_${Date.now()}",
|
loginIp: "192.168.1.100",
|
deviceInfo: "Test Device - sessionKey Fix Test"
|
}) {
|
token
|
userInfo {
|
userId
|
name
|
phone
|
}
|
isNewUser
|
loginRecordId
|
sessionKey
|
}
|
}
|
`
|
}, {
|
headers: {
|
'Content-Type': 'application/json'
|
}
|
});
|
|
if (loginResponse.status === 200 && loginResponse.data.data && loginResponse.data.data.wxLogin) {
|
const loginResult = loginResponse.data.data.wxLogin;
|
console.log('✅ 后端wxLogin接口正常');
|
console.log('- Token长度:', loginResult.token ? loginResult.token.length : 0);
|
console.log('- SessionKey存在:', !!loginResult.sessionKey);
|
console.log('- SessionKey长度:', loginResult.sessionKey ? loginResult.sessionKey.length : 0);
|
|
// 2. 模拟小程序端存储逻辑
|
console.log('\n2. 模拟小程序端存储逻辑...');
|
const mockStorage = {};
|
const mockGlobalData = {
|
userInfo: null,
|
token: null,
|
sessionKey: null // 这是我们修复的关键点
|
};
|
|
// 模拟wx.setStorageSync
|
function mockSetStorageSync(key, value) {
|
mockStorage[key] = value;
|
console.log(`存储 ${key}:`, typeof value === 'string' ? `${value.substring(0, 10)}...` : value);
|
}
|
|
// 模拟wx.getStorageSync
|
function mockGetStorageSync(key) {
|
return mockStorage[key];
|
}
|
|
// 模拟登录成功后的存储逻辑
|
mockSetStorageSync('token', loginResult.token);
|
mockSetStorageSync('userInfo', loginResult.userInfo);
|
if (loginResult.sessionKey) {
|
mockSetStorageSync('sessionKey', loginResult.sessionKey);
|
}
|
|
// 模拟设置globalData
|
mockGlobalData.token = loginResult.token;
|
mockGlobalData.userInfo = loginResult.userInfo;
|
mockGlobalData.sessionKey = loginResult.sessionKey;
|
|
console.log('✅ 存储逻辑完成');
|
|
// 3. 模拟checkLoginStatus逻辑
|
console.log('\n3. 模拟checkLoginStatus逻辑...');
|
const storedToken = mockGetStorageSync('token');
|
const storedUserInfo = mockGetStorageSync('userInfo');
|
const storedSessionKey = mockGetStorageSync('sessionKey');
|
|
console.log('从存储中读取:');
|
console.log('- Token存在:', !!storedToken);
|
console.log('- UserInfo存在:', !!storedUserInfo);
|
console.log('- SessionKey存在:', !!storedSessionKey);
|
console.log('- SessionKey长度:', storedSessionKey ? storedSessionKey.length : 0);
|
|
if (storedToken && storedUserInfo) {
|
mockGlobalData.token = storedToken;
|
mockGlobalData.userInfo = storedUserInfo;
|
mockGlobalData.sessionKey = storedSessionKey;
|
console.log('✅ 登录状态恢复成功');
|
}
|
|
// 4. 模拟手机号解密检查
|
console.log('\n4. 模拟手机号解密检查...');
|
console.log('globalData.sessionKey存在:', !!mockGlobalData.sessionKey);
|
console.log('globalData.sessionKey长度:', mockGlobalData.sessionKey ? mockGlobalData.sessionKey.length : 0);
|
|
if (!mockGlobalData.sessionKey) {
|
console.log('❌ sessionKey为空,无法解密手机号');
|
return false;
|
} else {
|
console.log('✅ sessionKey正常,可以进行手机号解密');
|
return true;
|
}
|
|
} else {
|
console.log('❌ 后端wxLogin接口异常');
|
console.log('响应:', loginResponse.data);
|
return false;
|
}
|
|
} catch (error) {
|
console.error('❌ 测试过程中发生错误:', error.message);
|
if (error.response) {
|
console.error('响应状态:', error.response.status);
|
console.error('响应数据:', error.response.data);
|
}
|
return false;
|
}
|
}
|
|
// 运行测试
|
testSessionKeyFix().then(success => {
|
if (success) {
|
console.log('\n🎉 sessionKey修复验证成功!');
|
console.log('现在小程序端应该能够正常获取和使用sessionKey进行手机号解密了。');
|
} else {
|
console.log('\n❌ sessionKey修复验证失败,需要进一步检查。');
|
}
|
}).catch(err => {
|
console.error('测试执行失败:', err);
|
});
|