最近由于公司业务,就开始研究微信开发的流程,说实话,这东西刚开始看到时候和看天书的一样,总算,看了一天的文档,测试代码终于出来了。

1、首先需要到微信网站去设置一下,我是直接用的微信测试号。
接口配置信息必须要填写的,所以说必须能将自己的服务发布出去
到此微信配置完毕,接下来就是直接上代码了
2、获取用户信息的方式一共是两种,前提都是用户关注微信公众号,一种是静默获取(snsapi_base,这种方式只能获取openid),另一种是授权获取(snsapi_userinfo,可以获取用户的详细信息)。
先说第一种
(1)首先需要先访问微信的链接
https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxxxxxxxxx&redirect_uri=http://xxxxxx/open/openid&response_type=code&scope=snsapi_base
这里的 uri就是直接回掉我们的服务地址,一定要记住,服务校验的判断,我是按照来判断的echostr(第二种方式也是这样)
package net.itraf.controller;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
@Controller
@RequestMapping("/open")
public class OpenController {
@RequestMapping("/toOpenId")
public @ResponseBody String getOpenId(String code,String echostr,HttpServletResponse res) throws IOException{
if(echostr==null){
String url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx24d47d2080f54c5b&secret=95011ac70909e8cca2786217dd80ee3f&code="+code+"&grant_type=authorization_code";
System.out.println(code);
String openId="";
try {
URL getUrl=new URL(url);
HttpURLConnection http=(HttpURLConnection)getUrl.openConnection();
http.setRequestMethod("GET");
http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
http.connect();
InputStream is = http.getInputStream();
int size = is.available();
byte[] b = new byte[size];
is.read(b);
String message = new String(b, "UTF-8");
JSONObject json = JSONObject.parseObject(message);
openId = json.getString("openid");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return openId;
}else{
PrintWriter out = res.getWriter();
out.print(echostr);
return null;
}
}
//做服务器校验
@RequestMapping("/tovalid")
public void valid(String echostr,HttpServletResponse res) throws IOException{
PrintWriter out = res.getWriter();
out.print(echostr);
}
}
第二种
(1)
https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxx&redirect_uri=http:// 域名
/open/openid&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect
package net.itraf.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/weixin")
public class Oauth2Action {
@RequestMapping("/oauth")
public void auth(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String echostr = request.getParameter("echostr");
if(echostr==null){
String appId = "wx24d47d2080f54c5b";
String appSecret = "95011ac70909e8cca2786217dd80ee3f";
//拼接
String get_access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?"
+ "appid="
+ appId
+ "&secret="
+ appSecret
+ "&code=CODE&grant_type=authorization_code";
String get_userinfo = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String code = request.getParameter("code");
System.out.println("******************code=" + code);
get_access_token_url = get_access_token_url.replace("CODE", code);
String json = HttpsGetUtil.doHttpsGetJson(get_access_token_url);
JSONObject jsonObject = JSONObject.fromObject(json);
String access_token = jsonObject.getString("access_token");
String openid = jsonObject.getString("openid");
get_userinfo = get_userinfo.replace("ACCESS_TOKEN", access_token);
get_userinfo = get_userinfo.replace("OPENID", openid);
String userInfoJson = HttpsGetUtil.doHttpsGetJson(get_userinfo);
JSONObject userInfoJO = JSONObject.fromObject(userInfoJson);
String user_openid = userInfoJO.getString("openid");
String user_nickname = userInfoJO.getString("nickname");
String user_sex = userInfoJO.getString("sex");
String user_province = userInfoJO.getString("province");
String user_city = userInfoJO.getString("city");
String user_country = userInfoJO.getString("country");
String user_headimgurl = userInfoJO.getString("headimgurl");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method \n");
out.println("openid:" + user_openid + "\n\n");
out.println("nickname:" + user_nickname + "\n\n");
out.println("sex:" + user_sex + "\n\n");
out.println("province:" + user_province + "\n\n");
out.println("city:" + user_city + "\n\n");
out.println("country:" + user_country + "\n\n");
out.println("<img src=/" + user_headimgurl + "/");
out.println(">");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}else{
PrintWriter out = response.getWriter();
out.print(echostr);
}
}
}
package net.itraf.controller;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HttpsGetUtil {
public static String doHttpsGetJson(String Url)
{
String message = "";
try
{
System.out.println("doHttpsGetJson");//TODO:dd
URL urlGet = new URL(Url);
HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
http.setRequestMethod("GET"); //必须是get方式请求 24
http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");//连接超时30秒28
System.setProperty("sun.net.client.defaultReadTimeout", "30000"); //读取超时30秒29 30
http.connect();
InputStream is =http.getInputStream();
int size =is.available();
byte[] jsonBytes =new byte[size];
is.read(jsonBytes);
message=new String(jsonBytes,"UTF-8");
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return message;
}
}
以上所述是小编给大家介绍的Java微信公众号开发之通过微信公众号获取用户信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# java
# 微信公众号
# java获取微信公众号用户信息
# java微信公众号企业付款开发
# Java版微信公众号支付开发全过程
# 微信公众号开发之设置自定义菜单实例代码【java版】
# java微信公众号支付开发之现金红包
# 微信公众号开发之回复图文消息java代码
# java微信公众号开发案例
# 用Java设计模式中的观察者模式开发微信公众号的例子
# java微信公众号开发第一步 公众号接入和access_token管理
# Java开发微信公众号接收和被动回复普通消息
# java微信公众号开发(搭建本地测试环境)
# java开发微信公众号支付
# Java 微信公众号开发相关总结
# 我是
# 第二种
# 小编
# 自己的
# 都是
# 看了
# 在此
# 两种
# 给大家
# 刚开始
# 能将
# 到此
# 所述
# 先说
# 第一种
# 给我留言
# 感谢大家
# 疑问请
# 说实话
# 有任何
相关文章:
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
建站之星微信建站一键生成小程序+多端营销系统
移民网站制作流程,怎么看加拿大移民官网?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何制作算命网站,怎么注册算命网站?
如何零基础开发自助建站系统?完整教程解析
专业网站建设制作报价,网页设计制作要考什么证?
如何通过商城免费建站系统源码自定义网站主题?
网站制作企业,网站的banner和导航栏是指什么?
如何快速辨别茅台真假?关键步骤解析
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
小型网站制作HTML,*游戏网站怎么搭建?
如何高效搭建专业期货交易平台网站?
购物网站制作公司有哪些,哪个购物网站比较好?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
定制建站流程步骤详解:一站式方案设计与开发指南
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
建站之星收费标准详解:套餐费用及年费价格表一览
Swift中循环语句中的转移语句 break 和 continue
再谈Python中的字符串与字符编码(推荐)
如何高效生成建站之星成品网站源码?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何快速生成专业多端适配建站电话?
制作宣传网站的软件,小红书可以宣传网站吗?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
内网网站制作软件,内网的网站如何发布到外网?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
制作网站的基本流程,设计网站的软件是什么?
建站之星北京办公室:智能建站系统与小程序生成方案解析
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
如何通过宝塔面板实现本地网站访问?
如何在阿里云虚拟服务器快速搭建网站?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何在IIS中新建站点并配置端口与物理路径?
如何快速使用云服务器搭建个人网站?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
css网站制作参考文献有哪些,易聊怎么注册?
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何快速搭建高效WAP手机网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
股票网站制作软件,网上股票怎么开户?
家具网站制作软件,家具厂怎么跑业务?
seo网站制作优化,网站SEO优化步骤有哪些?
网站设计制作企业有哪些,抖音官网主页怎么设置?
*请认真填写需求信息,我们会在24小时内与您取得联系。