html5 java 实现 微信获取认证身份信息
一,微信获取认证信息分两种类型
微信官方文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
本文采用第一种.
二 前端代码
首先获取code,然后重定向到当前页.
<script>
if(!GetQueryString("code")){
window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxx&redirect_uri=http://xxxxxx/xxxx/xxxx.html&response_type=code&scope=snsapi_base&state=123#wechat_redirect";
}
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);//search,查询?后面的参数,并匹配正则
if(r!=null)return unescape(r[2]); return null;
}
</script>
1)redirect_uri =替换成当前页面的地址
2)appid=换成自己微信公众号的appid
重定向后的页面结果如下
http://xxxxxx/xxxx/xxxx.html&code=xxxx&state=123;
然后,把获取到的code ajax请求后台,获取用户信息,存储到后端
三 后端代码
1)接口逻辑
Map<String, String> data = RequestMapToUtil.getPostByTextPlain(request);
String code = data.get("code");
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxxxxxxxxx&secret=xxxxxx&code=" + code + "&grant_type=authorization_code";
JSONObject jsonObject = WeiXinUtil.getCode(url, "GET", null);
String openid = jsonObject.getString("openid");
if (StringUtils.isNotBlank(openid) && !StringUtils.equals("null", openid)) {
request.getSession().setAttribute("openid", openid);
HdWxUser hdWxUser = new HdWxUser();
hdWxUser.setCreateOn(new Date());
hdWxUser.setOpenid(openid);
hdWxUser.setSource(data.get("from"));
hdWxUser.setUrl(data.get("localUrl"));
try {
hdWxUserService.save(hdWxUser);
} catch (Exception e) {
// 不处理
}
}
appid =替换为自己公众号的
secret =替换为自己公众号的
2)工具方法
public static JSONObject getCode(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {
URL url = new URL(requestUrl);
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
// 当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject = JSONObject.parseObject(buffer.toString());
} catch (ConnectException ce) {
log.error("Weixin server connection timed out.");
} catch (Exception e) {
log.error("https request error:{}", e);
}
return jsonObject;
}
至此方法结束,数据库只存储了openid. 由于参数设置的snsapi_base(见第一大标题).
有疑问,请求留言 交流 QQ 1360215811.
html5 java 实现 微信获取认证身份信息相关推荐
- uniapp同步获取用户信息_微信小程序云开发教程微信小程序的API入门获取用户身份信息系列API...
同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API. 在微信小程序中,我们往往需要获取用户的身份信息,比如昵称.头像.性别.地区等 ...
- java读取微信消息_微信公众平台开发中使用Java如何实现获取用户的信息
微信公众平台开发中使用Java如何实现获取用户的信息 发布时间:2020-11-18 15:09:28 来源:亿速云 阅读:93 作者:Leah 本篇文章为大家展示了微信公众平台开发中使用Java如何 ...
- 微信获取用户地理位置信息的原理与步骤
微信获取用户地理位置信息的原理与步骤 在微信公众服务号开发需求中经常有获取用户位置信息的功能,通过用户的位置信息,可以做一些地图导航,以及基于LBS的营销活动. 下面通过给大家介绍微信服务号获取用户位 ...
- 利用Java实现微信公众号发送信息提醒通知
项目场景: 项目场景:利用Java实现微信公众号发送信息提醒通知! Java实现方法: 1.首先创建实现公众号消息发送的方法: public ReturnDO<String> sendTe ...
- chatgpt赋能python:Python微信获取群聊信息:顶级互联的新标准
Python 微信获取群聊信息:顶级互联的新标准 Python 作为一种开源编程语言,已成为解决各种工程问题的首选方式之一.Python 是一种直观,并且简单易懂的编程语言,同时也非常强大,能够完成各 ...
- html5 java 实现微信公众号自动分享功能(自定义文案和图标)
一 前端代码 var wurl=location.href.split("#")[0]; console.log(wurl); var code = GetQueryStr ...
- 企业微信 获取当前用户信息
按我的理解说白了就是: 1 按微信指定的方式拼接出一个oauth url地址( https://open.weixin.qq.com/connect/oauth2/authorize?appid=CO ...
- html5 手机 消息,H5获取手机设备信息、app版本信息、ip地址
获取手机设备的相关信息,如IMEI.IMSI.型号.厂商等.通过plus.device获取设备信息管理对象. 获取当前运行环境信息.与其它程序进行通讯等.通过plus.runtime可获取运行环境管理 ...
- Java 通过 ip 获取所属城市信息
文章目录 1 摘要 2 核心 Maven 依赖 3 离线数据 db 保存 4 核心代码 5 测试 6 推荐参考资料 1 摘要 在实际项目中可能会用到统计用户地理位置的需求,这时可以通过客户端的 ip ...
最新文章
- gradient设置上下渐变_iOS 绘制渐变·实例篇
- 【组合数学】生成函数 ( 正整数拆分 | 无序 | 有序 | 允许重复 | 不允许重复 | 无序不重复拆分 | 无序重复拆分 )
- delphi 手机访问lan_索尼全新“黑科技”,手机秒变PS4,Apex英雄彻底沦为手游?...
- 【我们一起写框架】C#的AOP框架
- 【转】掌握Azure订阅的关键概念和术语
- Redis 如何实现限流功能?
- 创建oracle方法,简单的Oracle存储过程的创建方法
- docker php安装gd扩展_php安装redis扩展
- 关闭Windows自动更新—大法
- 多个fbx文件怎么合并_【Houdini】批量导入ABC和FBX文件mergeHips文件(搬运)
- 【致远FAQ】致远OA启动不起来了(下集)
- php掷骰子小游戏代码,C语言实现掷骰子游戏代码及解析
- IE浏览器被挟持怎么办,打不开正确网页被挟持到固定网页
- K8s 中 iptables 和ipvs 的理解
- java提高_最有效提高Java的10个计划
- 贴一篇感人肺腑激动人心的博客(转自51cto)
- 手机版python3h如何自制游戏_Python 飞机大战|10 分钟学会用 python 写游戏
- 2012意大利之行1:从深圳到罗马_我是亲民_新浪博客
- OPTIONALLY ENCLOSED BY '`'不可删除引号的情况
- 绘制三维多面体 Matlab,已知一些随机的三维坐标点,怎么用matlab把这些点绘制成多面体,急求程序代码啊...
热门文章
- [C语言]求两个数的最小公倍数
- Get-Me方便的下载工具
- 关于java时区转换夏令时问题及解决办法
- 如何用powerPCB设定4层板的层?-道合顺大数据Infinigo
- php+投票排序,关于phpcms v9投票模块选项排序listorder设定问题修改
- redis启动后 允许访问_如何配置redis外网可访问并只允许指定的ip可访问redis
- arduino/Mixly使用MH-Z19B二氧化碳传感器
- 保存计算机设备表,涉密信息设备和存储设备确定审批表.docx
- APP跳转到系统Wifi设置界面方式
- [dbnmpntw]连接忙碌中_岳阳连接线7公里处 藏了一个“稀世”屋场