// #ifdef MP-WEIXIN
// 小程序端仍使用uni.login
uni.login({
provider: "weixin",
onlyAuthorize: true,
success: (res) => {
console.log(res.code, "小程序登录成功");
if (showLoading) {
uni.showLoading({
mask: true,
title: "登录中",
});
}
resolve(res.code);
},
fail: (error) => {
console.log(error, "小程序登录失败");
uni.showToast({
title: "登录失败,请重试",
icon: "none",
});
reject(error);
},
});
// #endif
// #ifdef APP-PLUS
// APP端使用5+原生方式
if (showLoading) {
uni.showLoading({
mask: true,
title: "登录中",
});
}
// 获取登录服务
plus.oauth.getServices(
function (services) {
var weixinOauth = null;
for (var i in services) {
var service = services[i];
// 获取微信登录对象
if (service.id == "weixin") {
weixinOauth = service;
break;
}
}
if (!weixinOauth) {
if (showLoading) {
uni.hideLoading();
}
uni.showToast({
title: "未找到微信登录服务",
icon: "none",
});
reject(new Error("未找到微信登录服务"));
return;
}
// 使用authorize方法获取code(仅授权不获取用户信息)
weixinOauth.authorize(
function (event) {
if (showLoading) {
uni.hideLoading();
}
console.log("微信授权成功", event);
// 返回code给调用方
if (event.code) {
resolve(event.code);
} else {
// 如果没有code,返回整个event对象
resolve(event);
}
},
function (error) {
if (showLoading) {
uni.hideLoading();
}
console.log("微信授权失败", error);
let errorMsg = "登录失败,请重试";
// 处理5+App的错误码
if (error.code) {
switch (error.code) {
case -2:
errorMsg = "用户取消登录";
break;
case -3:
errorMsg = "发送失败";
break;
case -4:
errorMsg = "授权拒绝";
break;
case -5:
errorMsg = "微信未安装";
break;
case -6:
errorMsg = "微信版本不支持,请更新微信";
break;
case -7:
errorMsg = "微信登录配置错误,请联系开发者";
break;
case -100:
// 特别处理-100错误
if (error.innerCode === -6) {
errorMsg = "微信版本过低,请更新微信到最新版本";
} else {
errorMsg = "网络发送失败,请检查网络连接";
}
break;
default:
errorMsg = `登录失败(${error.code})`;
}
}
uni.showToast({
title: errorMsg,
icon: "none",
duration: 3000,
});
reject(error);
}
);
},
function (error) {
if (showLoading) {
uni.hideLoading();
}
console.log("获取微信登录服务失败", error);
uni.showToast({
title: "获取登录服务失败",
icon: "none",
});
reject(error);
}
);
// #endif
0 个回复