vue实现微信获取用户信息的方法

  

本次项目做到一个点赞功能,即分享出去一个页面给微信好友,微信好友点开并点赞,需要将点赞用户的微信昵称,微信头像以及微信openid,微信unionid(这个需要关注公众号才会有该字段)传给后端,记录点赞人的相关信息

  

微信网页授权

  

1,微信公众号网页授权配置,详见官网

  

2,关于网页授权的两种范围的区别说明(详细见官网)
  

  

范围=snsapi_base获取微信用户openid,获取后直接跳转业务页面,不需要用户操作
  

  

范围=snsapi_userinfo获取微信用户详细信息(昵称,头像等),需要用户手动点击授权,当点击允许时,会跳转业务页面(类似于关闭弹窗),点击拒绝时会推出页面,授权如图:
  

  

 vue实现微信获取用户信息的方法”> & # 9888;& # 65039;</p>
  <p> 3,用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即OpenID)关注了公众号后,才能调用成功的。</p>
  <p> 4分享页面的实际链接:<br/>
  </p>
  <p> & # 9888; & # 65039;当前页面的链接需要encodeURIComponent (url)编码</p>
  
  <pre类=   https://open.weixin.qq.com/connect/oauth3/authorize& # 63; appid=APPID& redirect_uri=REDIRECT_URI& response_type=code&范围=SCOPE&状态=# wechat_redirect//APPID:公众号的APPID//REDIRECT_URI:当前页面的链接,需要编码//范围:snsapi_base/snsapi_userinfo//其他值均不用改动以前      

5点击允许后跳转的链接是REDIRECT_URI +代码=CODE&状态=状态。
  

  

& # 9888; & # 65039;此处的代码可以用来调取接口获取微信用户的相关信息
  

  

& # 9888; & # 65039;每次用户授权带上的代码将不一样,代码只能使用一次,5分钟未被使用自动过期。
  

  

——官方说法代码只能被使用一次,在H5页面中,如果有跳转的情况,再返回当前页面,微信会判断是否已经授权,如果授权过,则代码返回的还是上一次的代码,而你如果用代码调取用户信息(代码已失效)会报无效代码,提示:[req_id: GGJbIz4ce-oGYwya],所以在第一次获取用户信息的时候就可以将该用户信息存储在本地

  

6,需要获取用户信息,且二次分享的问题
  

  

虽然当前页面没有问题,但是当前微信用户使用微信进行二次分享,则微信会分享当前页面的链接(不包含https://open.weixin.qq.com),新用户点击则不会进行授权,但是微信的二次分享会在当前链接加上,从=,可以在vue创建的生命周期里进行参数获取并判断,如果有从参数,则跳转https://open.weixin.qq.com/co..。链接,让用户授权
  & # 9888;& # 65039;二次分享样式显示问题可以查看我的另一篇文章vue +微信二次分享/自定义分享

  

代码如下

     //创建周期   如果(这一点。route.query.from美元){//判断链接中是否有从参数,下面的studentId, activityId项目需要   让_nowUrl=window.location.href.split(& # 63;)[0] + " & # 63;资源=1,studentId=$ {。$ route.query.studentId}, activityId=$ {$ route.query.activityId}。”   让_shareUrl=' https://open.weixin.qq.com/connect/oauth3/authorize& # 63; appid=$ {appid}, redirect_uri=$ {encodeURIComponent (_nowUrl)}, response_type=code&范围=snsapi_userinfo&状态=# wechat_redirect '   窗口。位置。href=https://www.yisu.com/zixun/_shareUrl   返回   }         //处理微信用户信息   handleWechatMsg(代码){//调取获取微信用户信息的接口(后端参考微信官方文档进行封装)代码——参数   api.getWechatInfo(代码)((res)=祝辞{   如果(res.data。代码==200){//返回的是json字符串   让_data=https://www.yisu.com/zixun/res.data.content   让_personMsg=JSON.parse (_data)   这一点。wechatMsg=_personMsg//本地存储微信用户信息,防止页面被刷,新代码失效   window.localStorage。setItem (wechatMesssage, _data)   如果(res.data}其他。代码==400){//400 -代码失效,400是后端返回,具体看后端返回哪个码   让公司=window.localStorage.getItem (“wechatMesssage”)   这一点。wechatMsg=JSON.parse(公司)   其他}{   美元。Message.message (res.data.message);   }      })   },      

如果需要获取微信unionid,则需要引导用户关注公众号,可以在返回的用户信息中判断是否含有unionid,如果没有,可以展示微信公众号的二维码,供用户识别关注

vue实现微信获取用户信息的方法