解决微信H5端用户注册登录

前端可主动或用户手动触发newregist(),引导用户登录或注册。

该演示为以snsapi_userinfo为scope发起的网页授权

前端页面发起登录请求:

Vue.prototype.newregist=function(){
	var appid_text=this.appid;//公众号appid
	var ourl="https://open.weixin.qq.com/connect/oauth2/authorize?";
	var appid='&appid='+ appid_text;
	var redirect_uri="&redirect_uri="+encodeURIComponent('https://www.example.cn/test/#/pages/middle/middle');
    //授权后重定向的回调链接地址,这里为middle中间页
	var response_type="&response_type=code";
	var scope="&scope=snsapi_userinfo";
	var wechat_redirect="#wechat_redirect";
	var url=ourl+appid+redirect_uri+response_type+scope+wechat_redirect;
	window.location.href=url; //拼接后的跳转链接
}

node后端通过API getopenid 获取并返回微信用户数据

exports.getopenid=function(req,res){
	var code=req.body.code;
	var froms=req.body.froms;
	var datas='';
	var appid='APPID';
	var secret="SECRET";
	var access_token_val="access_token";
	var openid="OPENID";
	var url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type=authorization_code";  
    //获取access_token
	request(url, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			datas=JSON.parse(body).openid;
			var access_token=JSON.parse(body).access_token;
			var urls='https://api.weixin.qq.com/sns/userinfo?access_token='+access_token+'&openid='+datas+'&lang=zh_CN';
            //获取用户信息
			request(urls, function (error, response, body) {
				if (!error && response.statusCode == 200) {
					var userinfo=JSON.parse(body);
					//已获取用户信息,进行相关操作,并将格式化的用户信息发回前端
                    res.send(userData);
				}
			});
		}
	});
}

在跳转中间页middle内执行函数login()

login(){
    var str=window.location.href;
			var that=this;
			var code=str.split("?")[1].split("&")[0].split("=")[1];
			uni.request({
				url:"https://www.example.cn/getopenid",
				method:'POST',
				data:{"code":that.code},
				success:(data)=> {
                    var userData=data;
                    //此处接收用户信息并跳转到目标页面
					location.href=uni.getStorageSync("originalurl");
				},
			});
}

中间页接收用户数据,做好存储,跳转至目标页面,完成登录/注册。

欢迎指正和共同探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

tx10765

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

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

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

打赏作者

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

抵扣说明:

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

余额充值