首先普及一个知识:一个关注的用户对于一个微信公众号是唯一的,也就是说一个用户针对与一个微信公众号是唯一的,对于不同的公众号,同一个微信号具有不同的openId;

在微信开发中,我们添加了一个二级菜单并实现一些相应的功能,往往是需要获取自己的openId,本文主要阐述如果通过与微信的交互得到自己的openId ;

这里提供一个连接,用于向微信发起请求:(在重定向之前准备好微信的AppId以及token,重定向的URL会被原样返回)

public static String buildAuthorizationUrl(String appid,String redirectUri, String state) {
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?";
url = url + "appid=" + appid;
url = url + "&redirect_uri=" + URIUtil.encodeURIComponent(redirectUri);
url = url + "&response_type=code";
url = url + "&scope=snsapi_base";
if (state != null) {
url = url + "&state=" + state;
}
url = url + "#wechat_redirect";
return url;
}

            请求成功后,会额外返回一个code以及state参数,其中code参数是唯一的,也就是说一次请求,产生一个code,作为校验的唯一标准,state参数是之前请求中的token参数

之后,获取到公众号的APPID以及appscret,通过解析返回的json数据格式,获取到自己个人的openId,之后再进行对业务的操作

public static String oauth2getOpenID(String code, String appid,
String appsecret) {
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?";
url = url + "appid=" + appid;
url = url + "&secret=" + appsecret;
url = url + "&code=" + code;
url = url + "&grant_type=authorization_code";
JSONObject jsonObject = JsonUtil.httpsRequest(url, "GET", "");
System.out.println("jsonObject=" + jsonObject);
return jsonObject.getString("openid");
}

  

最新文章

  1. AbpZero--1.如何开始
  2. 对象比较器:Comparable和Comparator
  3. 二十一、Java基础--------IO流之综合案例分析
  4. 用GUI完成了斗地主发牌
  5. paper 106:图像增强方面的介绍
  6. java面试
  7. 微信、qq时间格式模板
  8. ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询
  9. 大型web系统架构详解
  10. JSCharts
  11. WPF TextBox 的 EventTrigger & 重写控件
  12. RH133读书 笔记(3) - Lab 3 Configuring the kernel
  13. 项目管理Project
  14. 019 关联映射文件中集合标签中的lazy(懒加载)属性
  15. 记一次电信反射xss的挖掘与利用
  16. HDU 2504 又见GCD(最大公约数与最小公倍数变形题)
  17. EntityFrameworkCore中的OnModelCreating
  18. vc++基础班[24]---系统各种路径信息的获取
  19. Swift 了解(3)
  20. Vue运行报错--not defined

热门文章

  1. CSS 背景图像 背景图片定位
  2. SpringCloud-day09-Feign与Hystrix整合
  3. 学生管理系统(javaweb版)
  4. html入门第一天(知识总结)。
  5. MySQL实现批量检查表并进行repair与optimize的方法
  6. webpack优化以及node版本
  7. Polar Code(1)极化码SC译码迭代公式的理解
  8. angular4模块中标签添加背景图
  9. python脚本执行报错整理
  10. 配置Linux客户端使用socks5代理上网