export default { data() { return { authInfo: {} } }, methods: { /** * 获取用户登录凭证code */ getCode(callback) { // 微信小程序 // #ifdef MP-WEIXIN uni.login({ provider: 'weixin', timeout: 3000, success: res => { if (res.code) { this.$api.sendRequest({ url: '/weapp/api/weapp/authcodetoopenid', data: { code: res.code }, success: res => { if (res.code >= 0) { if (res.data.openid) this.authInfo.weapp_openid = res.data .openid; if (res.data.unionid) this.authInfo.wx_unionid = res.data .unionid; typeof callback == 'function' && callback(this.authInfo); } else { this.$util.showToast({ title: res.message ? res.message : '小程序配置错误' }); } } }) } }, fail: (res) => { // #ifdef MP-WEIXIN let scene = wx.getLaunchOptionsSync().scene; if ([1154, 1155].indexOf(scene) == -1) { this.$util.showToast({ title: res.errMsg }); } // #endif } }) // #endif // #ifdef MP-ALIPAY uni.login({ timeout: 3000, success: res => { if (res.code) { this.$api.sendRequest({ url: '/aliapp/api/aliapp/authcodetouserid', data: { code: res.code }, success: res => { if (res.code >= 0) { if (res.data.user_id) this.authInfo.ali_openid = res.data .user_id; typeof callback == 'function' && callback(this.authInfo); } else { this.$util.showToast({ title: res.message ? res.message : '小程序配置错误' }); } } }) } }, fail: (err) => { this.$util.showToast({ title: res.errMsg }); } }) // #endif // #ifdef H5 if (this.$util.isWeiXin()) { this.$api.sendRequest({ url: '/wechat/api/wechat/authcode', data: { redirect_url: location.href, scopes: 'snsapi_userinfo' }, success: res => { if (res.code >= 0) { location.href = res.data; } } }); } // #endif // #ifdef H5_XCX_5G_QUICKAPP_COM || H5_XCX_AIGC_QUICKAPP_COM || H5_5G_AIGC_QUICKAPP_COM || H5_TEST_AIGC_QUICKAPP_COM this._huaweiSignIn(callback); // #endif }, /** * 华为快应用帐号登录 */ async _huaweiSignIn(callback) { try { const HwService = require('@/common/js/hw-jssdk.js').default; // 确保 HwService 已初始化 if (!HwService.isQuickAppEnv()) { console.warn('[Auth] 非快应用环境,跳过华为帐号登录'); return; } const userInfo = await HwService.Account.signIn(); if (userInfo && userInfo.openId) { // 将华为 openId 传给后端换取系统 token this.$api.sendRequest({ url: '/wechat/api/quickapp/huawei_auth', data: { openid: userInfo.openId, unionid: userInfo.unionId, nickname: userInfo.displayName, avatar: userInfo.avatarUrl, gender: userInfo.gender }, success: res => { if (res.code >= 0) { if (res.data.openid) this.authInfo.hw_openid = res.data.openid; if (res.data.unionid) this.authInfo.hw_unionid = res.data.unionid; typeof callback == 'function' && callback(this.authInfo); } else { this.$util.showToast({ title: res.message ? res.message : '华为帐号登录失败' }); } } }); } } catch (error) { console.error('[Auth] 华为帐号登录失败:', error); this.$util.showToast({ title: '华为帐号登录失败' }); } } } }