E企盈小程序营销工具技术服务商 热线:4006-838-530

微信小程序授权登录,微信小程序授权登录

E企盈小程序直播系统

登录流程时序说明:调用wx.login()获取临时登录凭证code,并回传到开发者服务器。调用auth.code2Session接口,换取用户唯一标识OpenID和会话密钥session_key。之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。注意:会话密钥session_key是对用户数据进行加密签名的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。临时登录凭证code只能使用一次。具体实现1、获取登录凭证codelogin(){wx.login({success(res){if(res.code){//发起网络请求wx.request({url:’http://127.0.0.1:18080/wx/login’,method:’POST’,header:{‘content-type’:’application/x-www-form-urlencoded’},data:{code:res.code},success(res){if(res.data.status==200){letticket=res.data.ticket;//保存自定义登录态至客户端wx.setStorage({key:’LOGIN’,data:ticket})}else{//登录失败wx.removeStorage({key:’LOGIN’})}}})}else{console.log(‘登录失败!’+res.errMsg)}}})}2、调用auth.code2Session接口校验登录凭证GEThttps://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code填入对应的小程序ID、密钥、和刚刚获得的凭证code,得到响应:{“session_key”:”5tF5KuDigyB6e4m7FigHvw==”,”openid”:”orWy35UBNFZyReiUYVZvtPrqht-0″}该信息不能直接存储至客户端,需在服务端做保存(这里选择存储至redis中)。@RestController@RequestMapping(“/wx”)publicclassWeixinController{@AutowiredprivateRestTemplaterestTemplate;@AutowiredprivateRedisTemplateString,StringredisTemplate;publicstaticfinalStringAPPID=”your_appid”;publicstaticfinalStringSECRET=”your_secret_key”;@PostMapping(“/login”)publicMapString,ObjectwxLogin(@RequestParam(“code”)Stringcode){MapString,Objectresult=newHashMap();result.put(“status”,200);Stringurl=”https://api.weixin.qq.com/sns/jscode2session?appid=”+APPID+”&secret=”+SECRET+”&js_code=”+code+”&grant_type=authorization_code”;StringjsonResult=restTemplate.getForObject(url,String.class);if(StringUtils.contains(jsonResult,”errcode”)){//登陆凭证校验错误codebeenusedresult.put(“status”,5000);result.put(“msg”,”登陆失败”);returnresult;}//校验通过//Stringmd5Key=DigestUtils.md5Hex(jsonResult+”HAOKE_WX_LOGIN”);StringredisKey=”WX_LOGIN_”+md5Key;redisTemplate.opsForValue().set(redisKey,jsonResult,Duration.ofDays(7));result.put(“ticket”,”HAOKE_”+md5Key);returnresult;}}错误响应:code只能被使用一次{“errcode”:40163,”errmsg”:”codebeenused,hints:[req_id:tCpcZfyFe-myWCca]”}3、保存自定义登录态至客户端通过wx.setStorage,具体代码在前面贴了。4、校验是否登录checkSession(){const_this=this;wx.checkSession({success(){wx.showToast({title:’已登录’,icon:’success’,duration:2000})},fail(){wx.showToast({title:’登录失效’,icon:’none’,duration:2000})_this.login()//重新登录}})},6、发起业务请求时,携带客户端中的自定义登录态,去redis查询到对应的session_key和openid。

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序授权登录,微信小程序授权登录
分享到: 更多 (0)
E企盈小程序直播营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏