微信开发接口文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Authorized_Interface_Calling_UnionID.html

获取用户个人信息(UnionID机制)

接口说明

此接口用于获取用户个人信息。开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。请注意,在用户修改微信头像后,旧的微信头像URL将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像URL失效后的异常情况。

请求说明

http请求方式: GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

返回说明
正确的Json返回结果:{"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"privilege":[
"PRIVILEGE1",
"PRIVILEGE2"
],
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"}


<div class="layadmin-user-login-box layadmin-user-login-body layui-form" id="bind-account"><div class="layui-form-item"><label class="layadmin-user-login-icon layui-icon layui-icon-username"></label><input type="text" name="username" id="username" lay-verify="required" placeholder="用户名" class="layui-input"></div><div class="layui-form-item"><label class="layadmin-user-login-icon layui-icon layui-icon-password"></label><input type="password" name="password" id="password" lay-verify="required" placeholder="密码" class="layui-input"></div><div class="layui-form-item"><button class="layui-btn layui-btn-fluid" id="bind-login" onClick="bindLogin()">确 定</button></div>
</div>
//确认绑定微信且登录
function bindLogin(){var account = $('#username').val().trim();var password = $('#password').val().trim();if(account == ""){layer.msg('请输入账号!', {icon: 5});return;}if(password == ""){layer.msg('请输入密码!', {icon: 5});return;}//获取url中的key参数   //跳转微信绑定页面时候带来的参数var paramKey = window.location.search.substring(1).substring(4);if(paramKey == ""){layer.alert('请求错误,点击确定跳转至登录页重新登录!', {icon: 2,end :function(){location.href = 'login.html';}});return;}var param ={"account":account,"password":password};$.post("login/wxBindLogin.do",param,function(data){if(data.code== "failed"){layer.msg('绑定失败,请重试!',{icon: 5});}else if(data.code== "success"){location.href = 'index.jsp';}else{layer.msg('参数错误!',{icon: 2});}$("#bind-login").text("确定");$("#bind-login").css("color","#fff");});
}
//绑定微信且执行登录
@ResponseBody
@RequestMapping("/wxBindLogin")
public Object wxBindLogin(HttpServletRequest request,HttpServletResponse response){JSONObject jsonObj = new JSONObject();try {String account = WebUtil.decode(request.getParameter("account"));String password = WebUtil.decode(request.getParameter("password"));redisUtil.setDb(6);//在上一个扫码登入的时候,存入redis缓存中String code = (String)redisUtil.get("code");//非法请求直接返回if(StringUtils.isBlank(account) || StringUtils.isBlank(password)){jsonObj.put("code", "failed");return jsonObj;}//请求微信通过code获取access_tokenString accessToken = getUrlInfo("https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code="+code+"&grant_type=authorization_code");//将请求结果字符串转jsonJSONObject accessTokenJson = JSONObject.fromObject(accessToken);String access_token = (String)accessTokenJson.get("access_token");//接口调用凭证,登录后右上角展示数据需要该值去获取String openid = (String)accessTokenJson.get("openid");//授权用户唯一标识String unionid = (String)accessTokenJson.get("unionid");//用户统一标识(微信登录不需要该字段,但后面如果拓展其他功能可能需要)//验证成功,开始执行登陆方法User newUser = new User();newUser.setAccount(account);newUser.setOpenid(openid);//更新授权用户唯一标识newUser.setUnionid(unionid);//更新用户统一标识//把openid和unionid存到数据库中loginService.updatePWD(newUser);//根据access_token和openid获取用户昵称和头像用作右上角显示String wxInfo = getInfo("https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openid);//将请求结果字符串转jsonJSONObject wxInfoJson = JSONObject.fromObject(wxInfo);String nickname = (String)wxInfoJson.get("nickname");//普通用户昵称String headimgurl = (String)wxInfoJson.get("headimgurl");//用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空HttpSession session = request.getSession();session.setAttribute("wxusername", nickname);session.setAttribute("wxuserimg", headimgurl);jsonObj.put("code", "success");//删除redis中的key信息redisUtil.setDb(6);redisUtil.del("code");              } catch (Exception e) {jsonObj.put("code", "failed");e.printStackTrace();}return jsonObj;
}
//调用接口
private String getInfo(String URL) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = null;try {// 创建uriURIBuilder builder = new URIBuilder(URL);URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(),"UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;
}

微信账号和系统账号绑定相关推荐

  1. 企业微信怎么输入服务器id,系统账号绑定企业微信成员id

    原标题:系统账号绑定企业微信成员id 场景 在白码系统中需要使用各种接口对接企业微信时,发现需要使用企业微信的成员id,比如创建日程.获取打卡数据等接口,所以在此之前需要先将成员id与白码系统中的用户 ...

  2. 《小程序》微信小程序绑定系统账号并授权登录之微信端

    小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系 登录流程时序 说明 调用 wx.login() 获取 临时登录凭证code ,并回传到开发 ...

  3. 从零开始开发微信小程序(四):微信小程序绑定系统账号并授权登录之后台端...

    2019独角兽企业重金招聘Python工程师标准>>> 1. 后台开发环境: 语言:java 框架:springboot 2. 代码示例: package com.zc.wechat ...

  4. 车机账号体系与系统应用绑定

    一.概述 车辆账号体系,为每个车辆用户创建一个账号 ID,通过该账号 ID,实现车辆个性化设置(座椅.侧后视镜等).车机Pad个性化设置.车机Pad内应用的账户互通等功能,在多人共用一辆车,车辆可以根 ...

  5. 抖音账号矩阵系统源码/矩阵霸屏系统搭建部署/源码

    Tik Tok seo账号矩阵霸屏系统源代码账号矩阵系统建设部署,短视频seo账号矩阵框架分析,开发语言为后台框架语言PHP python后台语言:编辑 Tik Tok SEO排名优化的逻辑是通过技术 ...

  6. 抖音seo账号矩阵霸屏系统源码/账号矩阵系统搭建部署

    抖音seo账号矩阵霸屏系统源码账号矩阵系统搭建部署,短视频seo账号矩阵的框架分析,开发语言是后台框架语言   PHP   python  后台语言: 抖音seo排名优化的逻辑,是如何结合技术开发实现 ...

  7. 系统间账号认证系统同步方案

    系统间账号认证系统同步方案 基础原理:(基于Web) 浏览器在个请求传递cookie到服务器,服务器对cookie增删改查的操作, 写入JSessionId实现与服务器Session的绑定,保持会话 ...

  8. 360浏览器保存密码设置_电脑小技巧查看浏览器保存的系统账号密码

    电脑小技巧--电脑做无线热点 电脑小技巧--U盘坏了如何修复 电脑小技巧--自动维护计划.任务关闭.禁用 电脑小技巧--预防U盘中毒 电脑小技巧--提高U盘读写速度 电脑小技巧--调整引导高级选项加快 ...

  9. SpringBoot微信各应用统一账号信息登录开发 + 微信公众测试号开发

    SpringBoot实现微信各应用统一账号信息登录开发 + 微信公众测试号开发 上一期我们讲了微信公众号的授权登录开发以及网站应用的二维码登录开发,这期我们来讲一下微信公众号和网站应用等其他微信应用的 ...

  10. 什么是账号矩阵?账号矩阵系统源码怎么搭建及部署?

    什么是账号矩阵? 账号矩阵是通过不同平台不同账号之间建立联系,通过将同一品牌下不同平台不同账号的粉丝流量进行账号互通,根据平台不同的规则及内容,来输出企业及品牌信息,通过矩阵的形式提升粉丝数量及账号商 ...

最新文章

  1. TCP/IP详解--第五章
  2. Android系统编译so库提示error undefined reference to '__android_log_print问题的解决
  3. 关于计算机应用技术的周记,计算机应用技术专业实习周记范文
  4. Mysql多表查询(案例3)
  5. 修改系统UIAlertAction的按钮颜色
  6. 每天一道LeetCode-----判断二叉树左右两边是否成镜像关系
  7. 敏捷研发项目,我们该如何度量?
  8. 138_Power BIPower Pivot特殊半累加度量
  9. git commit撤销_Git 实用操作:撤销 Commit 提交
  10. Kettle计算器的使用以及字符串格式化
  11. Spring的bean管理(注解注入属性)
  12. Word样式窗格、模板格式
  13. Multisim14仿真基本模拟电路之 10. 3. 2比例放大电路的仿真实验与分析
  14. 【C语言】指针进阶第五站,函数指针
  15. Film Stocks for Mac(PS胶片模拟调色插件)
  16. K8S学习之storageclass
  17. 思维导图工具---Xmind使用方法和快捷键汇总(精简版)
  18. 使用Win64OpenSSL_Light生成自签名https授权证书的几个坑
  19. Lol的积分机制:埃罗(ELO)预算法详解
  20. IB36分斩获藤校?看艺术设计类专业

热门文章

  1. 【年终总结】—此生平凡,终不简单
  2. python二进制常量_Python SciPy 常数(Constants)
  3. _003_WindowsOperation_为什么升级win10后,很多软件打开就显示文件系统错误(-1073741819)
  4. JAVAweb JSP飞机订票系统航空机票预订销售系统(机票预订系统)网上机票预订飞机订票
  5. 计算机定时开机关机设置,怎样设置电脑定时开机关机
  6. php exec 命令,概述PHP命令行shell_exec()使用
  7. MQ,究竟如何做到削峰填谷?
  8. 抖音上好看的小姐姐,Python给你都下载了
  9. win10开启移动热点,手机无法获取ip地址
  10. 获取ie窗口的IHTMLDocument2对象