全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java微信公众号开发之通过微信公众号获取用户信息

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

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小时内与您取得联系。