网页授权 拿到code获取oppenId

网页授权

        如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

一、openId是什么?

          openId是用户在当前公众号下的唯一标识(‘身份证’),就是说通过这个openId,就能区分在这个公众号下具体是哪个用户。

二、openId有什么用

        假如用户A在当前公众号下购买了一件商品,用户的下单信息肯定要存储到后台数据库,那根据什么进行存储呢?openId是用户在当前公众号下的唯一标识,通过openId和用户的下单购买信息进行键值对的数据绑定。那么我要查询该用户购买过什么商品,就能够通过openId去查询,并且数据是唯一的,不会和另外的用户数据有冲突。

三、怎么获取openId?

        1.登录微信公众平台后台,在基本配置中可以查看公众号开发信息,可以获取到公众号的AppId

       (这里AppSecret是后端调用微信接口时要用到的值,后端需要传正确的AppID和AppSecret,如果在调用接口获取openId的时候报错40029,一般都是这两个值不匹配导致的错误。)

       

      2.设置回调地址页面向导:开发 -> 接口权限 -> 网页服务 -> 网页授权 -> 修改。

            开发的项目需要放到已经解析好服务器域名的服务器下,同时把Mp***.txt文件放到服务器根目录下(回调域名是字符串不是url,不能有端口,不能包含http://或者https://)

        

     3.前端代码,配置的参数要一一对应,获取code,并调用后台接口,把code传给后台,获取后端返回的oppenId。

        let openid = localStorage.getItem('openid');		//获取用户openid 

		if(!openid){
			let code = getQueryVariable('code');		//获取微信返回code
			let appid = '此处存放公众号appid';								
			let redirect_uri = window.location.href;		//回调地址
			redirect_uri = encodeURIComponent(redirect_uri)
			let url1 = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`;
			if(!code){
				window.location.href = url1;		//如果没有code值,则跳转微信接口获取code
			}else{
				// 通过微信返回的code获取用户openid
				$.ajax({
					url: "此处存放后端接口",    //调用后端接口传给后端code获取后端返回oppenId
					data:{
						code,
					}, 
					type: "get",
					success: function(res) { 
						alert('res:'+JSON.stringify(res))
					},
					error: function(err) {
						alert('err:'+ JSON.stringify(err))
					}
				});
			}
		}else{
			alert('openid:'+openid);
		}

      //获取url地址里面的参数
      function getQueryVariable(variable) {
			var query = window.location.search.substring(1);
			var vars = query.split("&");
			for (var i = 0; i < vars.length; i++) {
				var pair = vars[i].split("=");
				if (pair[0] == variable) {
					return pair[1];
				}
			}
			return (false);
		}

上述代码:

 从浏览器缓存中获取oppenid,如果没有oppenid,就要先获取微信返回的code,如果没有code,就要调用微信获取code的接口来拿到code,微信获取code的接口需要用到appid和回调地址(微信跳回来的地址),这里注意,因为微信接口是跳转一个url地址,如果调用微信接口跳转到微信那边的页面去了,就离开自己的页面了,所以我们拿到code后还要跳回自己的页面,需要给微信方一个回调地址,告诉微信拿到code要跳回到哪里去,这里window.location.href就代表你当前的url,然后传给微信接口的时候这个地址要转码一下,不然传不过去。然后拿到code之后我们就可以调用后端接口传给后端code获取oppenid了,一般情况下是后端那边调用微信接口获取oppenid,前端调用后端方法获取即可。

更多学习可以去看官网文档,这里详解。网页授权 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#0

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果授权手机号获取不到code,可能是由于以下原因: 1. 网络连接问题:授权手机号获取code需要通过网络连接来获取,如果手机网络连接不稳定或者信号不好,就可能导致无法获取code。 2. 授权手机号不正确:如果输入的授权手机号有误,就无法正确获取code。请确认手机号是否输入正确。 3. 授权平台问题:有些授权平台可能存在故障或者维护,导致无法正常获取code。可以尝试使用其他授权平台或稍后再试。 4. 授权过程中的错误:在授权过程中可能出现错误,例如验证码输入错误、手机号未在授权平台注册等。请仔细检查授权过程中的输入操作,确保没有错误。 针对以上情况,可以尝试以下解决方法: 1. 检查网络连接:确保手机网络连接正常,可以尝试切换到其他网络或者重启手机后再试。 2. 确认手机号:重新输入授权手机号,确保输入正确。可以尝试使用其他手机号进行授权。 3. 尝试其他授权平台:如果使用的授权平台无法获取code,可以尝试使用其他的授权平台进行授权。 4. 重试授权过程:如果在授权过程中出现错误,可以重新开始授权过程,仔细检查输入的验证码和手机号等信息是否正确。 如果经过以上尝试仍然无法获取code,建议联系授权平台的客服或者技术支持寻求帮助,他们可能能够提供更具体的解决方法或者排查问题的原因。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值