51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import { config } from '../../config';
|
||
|
||
Page({
|
||
data: {
|
||
url: ''
|
||
},
|
||
onLoad(options: any) {
|
||
// 这里的 URL 必须是您后端服务器的地址
|
||
// 注意:本地调试时,web-view 访问 localhost 需要在开发者工具勾选“不校验域名”
|
||
// 但微信 OAuth 回调必须是公网域名,所以这里填 localhost 只能走到跳转微信那一步,回调会失败
|
||
// 除非您配置了 host 映射或者使用了内网穿透
|
||
const serverUrl = `${config.baseUrl}/auth/oa/login`;
|
||
this.setData({ url: serverUrl });
|
||
},
|
||
onMessage(e: any) {
|
||
console.log('WebView message:', e.detail);
|
||
const data = e.detail.data;
|
||
if (data && data.length > 0) {
|
||
const lastData = data[data.length - 1];
|
||
|
||
// 保存到本地存储,供 index 页面 onShow 读取并触发后续逻辑
|
||
// 保存所有可用的微信用户信息
|
||
wx.setStorageSync('oa_user_info', {
|
||
nickName: lastData.nickname,
|
||
avatarUrl: lastData.headimgurl,
|
||
unionid: lastData.unionid,
|
||
gender: lastData.sex, // 1男 2女 0未知
|
||
country: lastData.country,
|
||
province: lastData.province,
|
||
city: lastData.city,
|
||
language: lastData.language
|
||
});
|
||
|
||
// 同时更新上一页数据,确保 UI 即时刷新
|
||
const pages = getCurrentPages();
|
||
const prevPage = pages[pages.length - 2]; // 上一个页面 (index)
|
||
if (prevPage) {
|
||
prevPage.setData({
|
||
"userInfo.avatarUrl": lastData.headimgurl,
|
||
"userInfo.nickName": lastData.nickname,
|
||
"userInfo.gender": lastData.sex,
|
||
"userInfo.country": lastData.country,
|
||
"userInfo.province": lastData.province,
|
||
"userInfo.city": lastData.city,
|
||
"userInfo.language": lastData.language,
|
||
"unionid": lastData.unionid || prevPage.data.unionid
|
||
});
|
||
}
|
||
}
|
||
}
|
||
}) |