一,微信获取认证信息分两种类型

微信官方文档 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 实现 微信获取认证身份信息相关推荐

  1. uniapp同步获取用户信息_微信小程序云开发教程微信小程序的API入门获取用户身份信息系列API...

    同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API. 在微信小程序中,我们往往需要获取用户的身份信息,比如昵称.头像.性别.地区等 ...

  2. java读取微信消息_微信公众平台开发中使用Java如何实现获取用户的信息

    微信公众平台开发中使用Java如何实现获取用户的信息 发布时间:2020-11-18 15:09:28 来源:亿速云 阅读:93 作者:Leah 本篇文章为大家展示了微信公众平台开发中使用Java如何 ...

  3. 微信获取用户地理位置信息的原理与步骤

    微信获取用户地理位置信息的原理与步骤 在微信公众服务号开发需求中经常有获取用户位置信息的功能,通过用户的位置信息,可以做一些地图导航,以及基于LBS的营销活动. 下面通过给大家介绍微信服务号获取用户位 ...

  4. 利用Java实现微信公众号发送信息提醒通知

    项目场景: 项目场景:利用Java实现微信公众号发送信息提醒通知! Java实现方法: 1.首先创建实现公众号消息发送的方法: public ReturnDO<String> sendTe ...

  5. chatgpt赋能python:Python微信获取群聊信息:顶级互联的新标准

    Python 微信获取群聊信息:顶级互联的新标准 Python 作为一种开源编程语言,已成为解决各种工程问题的首选方式之一.Python 是一种直观,并且简单易懂的编程语言,同时也非常强大,能够完成各 ...

  6. html5 java 实现微信公众号自动分享功能(自定义文案和图标)

    一 前端代码 var wurl=location.href.split("#")[0];  console.log(wurl);   var code =  GetQueryStr ...

  7. 企业微信 获取当前用户信息

    按我的理解说白了就是: 1 按微信指定的方式拼接出一个oauth url地址( https://open.weixin.qq.com/connect/oauth2/authorize?appid=CO ...

  8. html5 手机 消息,H5获取手机设备信息、app版本信息、ip地址

    获取手机设备的相关信息,如IMEI.IMSI.型号.厂商等.通过plus.device获取设备信息管理对象. 获取当前运行环境信息.与其它程序进行通讯等.通过plus.runtime可获取运行环境管理 ...

  9. Java 通过 ip 获取所属城市信息

    文章目录 1 摘要 2 核心 Maven 依赖 3 离线数据 db 保存 4 核心代码 5 测试 6 推荐参考资料 1 摘要 在实际项目中可能会用到统计用户地理位置的需求,这时可以通过客户端的 ip ...

最新文章

  1. gradient设置上下渐变_iOS 绘制渐变·实例篇
  2. 【组合数学】生成函数 ( 正整数拆分 | 无序 | 有序 | 允许重复 | 不允许重复 | 无序不重复拆分 | 无序重复拆分 )
  3. delphi 手机访问lan_索尼全新“黑科技”,手机秒变PS4,Apex英雄彻底沦为手游?...
  4. 【我们一起写框架】C#的AOP框架
  5. 【转】掌握Azure订阅的关键概念和术语
  6. Redis 如何实现限流功能?
  7. 创建oracle方法,简单的Oracle存储过程的创建方法
  8. docker php安装gd扩展_php安装redis扩展
  9. 关闭Windows自动更新—大法
  10. 多个fbx文件怎么合并_【Houdini】批量导入ABC和FBX文件mergeHips文件(搬运)
  11. 【致远FAQ】致远OA启动不起来了(下集)
  12. php掷骰子小游戏代码,C语言实现掷骰子游戏代码及解析
  13. IE浏览器被挟持怎么办,打不开正确网页被挟持到固定网页
  14. K8s 中 iptables 和ipvs 的理解
  15. java提高_最有效提高Java的10个计划
  16. 贴一篇感人肺腑激动人心的博客(转自51cto)
  17. 手机版python3h如何自制游戏_Python 飞机大战|10 分钟学会用 python 写游戏
  18. 2012意大利之行1:从深圳到罗马_我是亲民_新浪博客
  19. OPTIONALLY ENCLOSED BY '`'不可删除引号的情况
  20. 绘制三维多面体 Matlab,已知一些随机的三维坐标点,怎么用matlab把这些点绘制成多面体,急求程序代码啊...

热门文章

  1. [C语言]求两个数的最小公倍数
  2. Get-Me方便的下载工具
  3. 关于java时区转换夏令时问题及解决办法
  4. 如何用powerPCB设定4层板的层?-道合顺大数据Infinigo
  5. php+投票排序,关于phpcms v9投票模块选项排序listorder设定问题修改
  6. redis启动后 允许访问_如何配置redis外网可访问并只允许指定的ip可访问redis
  7. arduino/Mixly使用MH-Z19B二氧化碳传感器
  8. 保存计算机设备表,涉密信息设备和存储设备确定审批表.docx
  9. APP跳转到系统Wifi设置界面方式
  10. [dbnmpntw]连接忙碌中_岳阳连接线7公里处 藏了一个“稀世”屋场