当前位置: 首页 > news >正文

杭州网站如何制作云南网站开发软件

杭州网站如何制作,云南网站开发软件,网站2个页面做首页,西安优化网站推广这两天在自己的小项目中加入了微信小程序的很多功能#xff0c;今天来说一下关于微信授权登录的部分。 需要的材料 1#xff1a;一个可以测试的微信小程序 2#xff1a;此微信小程序的APPID和APPscret 流程 微信用户对应一个小程序都有一个唯一的openid#xff0c;微信…这两天在自己的小项目中加入了微信小程序的很多功能今天来说一下关于微信授权登录的部分。 需要的材料 1一个可以测试的微信小程序 2此微信小程序的APPID和APPscret 流程 微信用户对应一个小程序都有一个唯一的openid微信授权登录微信授权登录的核心就是获取这个openid并存在数据库作为用户存在的唯一标识。微信授权登录的流程大体分为两步 1.微信小程序前端获取code并发送到后台 在微信小程序的前端调用wx.login()获取一个code这个code就像是我们去微信后台服务器获取用户信息的一个钥匙微信通过获取这个code的过程给用户一个选择是否授权的选择如果用户选择了授权就会返回一个code。这个code是一次性的也是有时限的代码如下。 //请求codewx.login({success(res) {if (res.code) {//把获取到的code通过一个request的请求发给java服务器wx.request({url:你的url地址,data: {code: res.code}, method: POST,dataType: json,success: function (res) {//请求成功的处理}}},fail: function () {console.log(发送code失败, res.data); }}) 2.后台接收code并通过code拉取用户的openid 后台接受了code以后通过建立一个http请求去访问微信后台服务器拉取这个用户的openid如果一切正常就会得到这个用户对应这个小程序的openid和用户个人的Access_token和微信小程序的Access_Token不一样。 请求的地址 https://api.weixin.qq.com/sns/jscode2session?appidAPPIDsecretSECRETjs_codeJSCODEgrant_typeauthorization_code 通过GET方式访问其中的参数分别是 appid小程序的appid secret小程序的appsecret js_code小程序前端传来的code grant_type这个不用修改表示授权的类型 需要用到的包 !-- http请求工具包依赖 -- dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion4.5.2/version /dependency public MapString, Object hqToken(String code, String APPID, String APPSecret) {StringBuilder url new StringBuilder(https://api.weixin.qq.com/sns/jscode2session?);url.append(appid);//appid设置url.append(APPID);url.append(secret);//secret设置url.append(APPSecret);url.append(js_code);//code设置url.append(code);url.append(grant_typeauthorization_code);MapString, Object map null;try {HttpClient client HttpClientBuilder.create().build();//构建一个ClientHttpGet get new HttpGet(url.toString()); //构建一个GET请求HttpResponse response client.execute(get);//提交GET请求HttpEntity result response.getEntity();//拿到返回的HttpResponse的实体String content EntityUtils.toString(result);System.out.println(content);//打印返回的信息JSONObject res JSONUtil.parseObj(content);//把信息封装为json//把信息封装到mapSystem.out.println(------dasasdasdasdasd);System.out.println(res);} catch (Exception e) {e.printStackTrace();}return map;} 返回的数据 通过上面的代码我们就可以拿到返回的数据转为的Map返回了。之后的逻辑代码我就不贴了每个人的都不同,我说一下我的思路。这里我只用到了openid在业务代码中从map中获取openid如果成功获取就通过这个openid查询数据库如果没有找到相应的记录就说明这个用户第一次登录我就为他创建一个新账户并把账户的userid和这个openi做一个关联存到另外一张表中为什么不把openid也存到账户的信息表中呢把openid和用户信息分开保存以后如果项目做平台移植时更方便。存完表之后把这个openid对应的账户标记为登录状态然后把相应的用户信息和sessionid或者token根据你具体的实现方式返回。 这就是用户微信第一次授权相当于是一个注册的过程。 如果从Map中得到的openid已经在数据库中有记录的话说明此用户已经注册过了这时就把openid对应的用户信息和sessionid返回并把这个用户标记为登录状态就ok了。 这时用户微信非第一次授权相当于一个登录的过程。 此次授权是是登录还是注册我通过一个建立一个标识位给前端判断前端如果通过这个标识位判断这次是注册就继续通过wx.getUserInfo()方法拉取用户头像昵称等信息然后通过修改用户信息的接口传到后端进行一个修改的操作。建议不要每次获取code之后就调用getUserInfo方法拉取信息然后一次性把code和用户信息传到后端一来是用户如果进行的登录操作微信个人信息时没有用的增加了获取数据时间和传输时间。二是我们如果每次获取到用户信息就给他设置个人信息这样就会覆盖用户之前的操作比如用户之前已经修改一次头像这时微信头像和小程序内部头像是不同的然后用户重新登录了一下两者的头像又一样了这样是错误的如果不想得到这样的结果就得再进行一次判断增加了代码耦合度。所以登录注册应该只传code用户的信息设置应该用另外一个接口。   最后 微信官方这方面的文档写的比较详细链接https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html只是我在做的时候也踩了不少坑这次把微信授权登录的流程做了详细的记录
http://www.yutouwan.com/news/495632/

相关文章:

  • 凡科网站模板下载大连网站推广公司
  • 浙江建设厅网站官网网站怎么套模板
  • 温州生活网招聘信息汕头市网络优化推广平台
  • 企业建站公司电话哪个网站域名更新快
  • 企业网站开发毕业报告主页推广项目计划书
  • 电信备案网站WordPress知更鸟lts
  • 深圳网站设计开发动漫设计工作室网站制作公司
  • 网站建设费 无形资产网站显示数据
  • 企业网站设计怎么做wap网站编辑器
  • 只有域名如何做网站网络网站建设公司
  • 西安做网站的公司报价站长工具查询视频
  • 网站开发工程师题可以上传图片的网站怎么做
  • 淘宝联盟网站模板中国互联网大厂排名
  • 邯郸网站建设设计wordpress cg主题
  • 昌江县住房和城乡建设网站企业融资计划
  • 外贸网站制作推广成都网站制作公司定制
  • 青岛 公司 网站建设坪山网站建设设计
  • 专业网站设计公司价格wordpress如何不显示评论
  • 怎么在360做网站信息流推广渠道
  • 网站建设的风险识别廊坊哪里有做网站的
  • 南江县规划和建设局网站平面设计 网站推荐
  • wordpress注册码插件网站seo诊断报告
  • 平阳住房和城乡建设厅网站湖州南浔建设局网站
  • 飞卢盗版做的最好的网站专门给小公司做网站
  • 动易网站地图wordpress自动压缩图片大小
  • 谷歌外贸网站国家知识产权专利网官网
  • 北京城乡住房建设厅网站wordpress替换表情变小
  • 南京市建设监理协会网站wordpress博客漏洞
  • 外网网站管理制度建设全自动网站制作系统
  • 宣城市建设监督管理局网站首页甘肃省兰州市新闻