uniapp 开发 h5 授权微信登录(静默和非静默)

具体流程:

进入 h5 ➡️ 静默登录 ➡️ 请求登录接口 ➡️ 必要时候调起登录组件 ➡️ 点击按钮进行非静默登录 ➡️ 再次请求登录接口 ➡️ 获取到所有用户数据

一、封装登录 function

authLogin: (callback) => {
   
	const that = this;
	// 判断是否是在微信环境下运行
	if (utils.isWechat()) {
   
		const token = window.localStorage.getItem('__token');
		const unionid = window.localStorage.getItem('__unionid');
		const loginType = window.localStorage.getItem('__loginType');
		// 有token证明登录过,可直接进行回调
		if (token) {
   
			callback();
			return;
		}
		if (!unionid) {
   
		    // 判断登录方式为静默或非静默, snsapi_base 静默,snsapi_userinfo 非静默
			const snsapi = loginType == "snsapi_userinfo" ? "snsapi_userinfo" : "snsapi_base";
			// 获取 code 方法,附文章最下边
			let _code = utils.getUrlParam("code");
			if (_code == null || _code === "") {
   
				// 进行微信授权,附文章最下边
				// 传当前页面的URL(微信授权完之后返回到的页面)和 登录方式
				utils.getWXCode(window.location.href, snsapi);
			} else {
   
				uni.request({
   
					url: '登录请求接口',
					method: "GET",
					data: {
   
						code: _code,
						snsapi: snsapi
					},
					success: (res) => {
   
						// 静默登录获取到的 unionid 为假数据,我这里后端接口设置静默登录时候返回为 "" ,方便后面判断是否需要非静默登录
						window.localStorage.setItem('__unionid', res.data.data.unionid);
						window.localStorage.setItem('__token', res.data.data.token);
						window.localStorage.setItem('__openid', res.data.data.openid);
						window.localStorage.removeItem('__loginType');
						// 登录成功后的回调,我这里的每个接口请求都需要在有token的前提下进行
						callback();
					},
					fail: (err) => {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈龙龙的陈龙龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值