Java实现的微信公众号获取微信用户信息示例

本文实例讲述了Java实现的微信公众号获取微信用户信息。分享给大家供大家参考,具体如下:

注:  这里获取用户信息方式和网页授权获取用户信息方式不同。两个access_token不同,返回的结果也不同。

我们很多场景可能需要用户信息

微信公众号获取微信用户信息需要的条件:

1.获取用户openId。可以在用户绑定APP的时候用code换取,也可以在用户关注公众号的时候获取,或者小程序授权时获取。微信公众号code换取openId(详见附录)

2.获取该微信公众号 access_token。方法可见微信公众号获取access_token。

3.通过openId和access_token请求微信服务器获取用户信息。

代码如下:(略去httpclientutil类,详见微信公众号获取access_token)

public class WeChatUserInfoTest {
  public static void main(String[] args) {
    String accessToken = "";//测试accessToken写死 真实环境不应该写死
    String openId = "";//测试openId写死 真实环境不应该写死
    Map<String, String> params = new HashMap<>();
    params.put("access_token", accessToken);
    params.put("openid", openId);
    params.put("lang", "zh_CN");
    String url = "https://api.weixin.qq.com/cgi-bin/user/info";
    String response = HttpClientUtil.doGet(url, params);
    JSONObject object = JSONObject.parseObject(response);
    /**
     * 移动应用、网站应用和公众帐号关联到同一个微信开放平台帐号时,unionid是唯一的,
     * 如果需要打通移动应用、网站应用和公众帐号或者以后要打通,很有必要存储unionId
     */
    String unionId = object.getString("unionid");
    /**
     * nickName很可能是一些古怪的符号,因此实际场景需要对nickName做处理,可以使用emoji-java的工具类去处理
     */
    String nickName = object.getString("nickname");
    String avatarUrl = object.getString("headimgurl");
  }
}

附:微信公众号code换取openId

微信网页授权的时候,不管是静默授权还是显示的用户点击授权,我们都能够拿到用户的code,详见官方文档

拿到用户的code之后我们就可以根据我们的已有的appid和sercet拿到openId。

public class WeChatUserInfoTest {
  public static String getOpenId(String code, String appId, String appSecret) {
    Map<String, String> params = new HashMap<>();
    params.put("appid", appId);
    params.put("secret", appSecret);
    params.put("code", code);
    params.put("grant_type", "authorization_code");
    String url = "https://api.weixin.qq.com/sns/oauth2/access_token";
    String response = HttpClientUtil.doGet(url, params);
    JSONObject object = JSONObject.parseObject(response);
    String openId = object.getString("openid");
    return openId;
  }
  public static void main(String[] args) {
    String appId = "";//对应的appId
    String appSecret = "";//对应的appSecret
    String code = "";//前端获取到的用户code
    String openId = getOpenId(appId, appSecret, code);
    System.out.println(openId);
  }
}

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java字符与字符串操作技巧总结》、《Java数组操作技巧总结》、《Java数学运算技巧总结》、《Java编码操作技巧总结》和《Java数据结构与算法教程》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • java微信公众号支付开发之现金红包

    我们先来看看公众号发放现金红包的效果: 需要调用商户平台的接口,接口发放规则如下: 1.发送频率限制--默认1800/min 2.发送个数上限--按照默认1800/min算 3.金额上限--根据传入场景id不同默认上限不同,可以在商户平台产品设置进行设置和申请,最大不大于4999元/个 4.其他的"量"上的限制还有哪些?--用户当天的领取上限次数,默认是10 5.如果量上满足不了我们的需求,如何提高各个上限?--金额上限和用户当天领取次数上限可以在商户平台进行设置 注意-红包金额大于2

  • java微信公众号开发(搭建本地测试环境)

    俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一个用来测试的公众号,还有一个用来调式代码的开发环境. 测试公众号 微信公众号有订阅号.服务号.企业号,在注册的时候看到这样的信息,只有订阅号可以个人申请,服务号和企业号要有企业资质才可以.这里所说的微信公众号开发指的是订阅号和服务号. 另外,未认证的个人订阅号有一些接口是没有权限的,并且目前个人订阅号已不支持微信认证,也就是说个人订阅号无法调用一些高级的权限接口,下图就是一个未认证的个人订阅号所具备权限列表,像生成二

  • Java实现微信公众号获取临时二维码功能示例

    本文实例讲述了Java实现微信公众号获取临时二维码功能.分享给大家供大家参考,具体如下: 我们做微信公众号开发时为了推广,可能需要服务端去生成公众号的临时二维码,然后再进行一定的图片合成操作,制作一张漂亮的推广海报.别人扫一下二维码进入关注公众号界面,点击关注我们可以拿到二维码里面的信息官网地址 记录一下获取临时二维码操作过程. 1.获取access_token 上一篇文章写了 就不赘述了: 2.根据access_token获取二维码ticket,获取到了二维码ticket就基本山是成功了: 3

  • Java版微信公众号支付开发全过程

    一.微信官方文档微信支付开发流程(公众号支付) 首先我们到微信支付的官方文档的开发步骤部分查看一下需要的设置. [图片上传失败...(image-5eb825-1531014079742)] 因为微信支付需要较高的权限,只有认证了得服务号才有使用微信支付接口的权限,我们个人很难申请到,所以需要向其他朋友借用账号. 来到文档的业务流程部分,查看微信支付的流程(我觉得这个还是需要十分仔细的了解和查看的,这有助于你理解微信开发的流程). 然后,访问微信支付接口是要传递的参数很多,见统一下单 [图片上传

  • java开发微信公众号支付

    最近做了微信公众号支付的开发,由于是第一次做也摸索了几天的时间,也只是达到了实现功能的水平,并没有太多考虑到性能问题,所以这篇文章比较适合初学者. 微信公众号支付的总体其实很简单,大致就分为三步.第一步需要获取用户授权:第二步调用统一下单接口获取预支付id:第三步H5调起微信支付的内置的js.下面介绍具体每一步的开发流程. 一    首先要明确微信公众号支付属于网页版支付,所以相较于app的直接调取微信支付要多一步微信授权.也就是需要获取用户的openid.微信公众号使用的交易类型是JSAPI,

  • 详细Java批量获取微信公众号方法

    最近需要爬取微信公众号的文章信息.在网上找了找发现微信公众号爬取的难点在于公众号文章链接在pc端是打不开的,要用微信的自带浏览器(拿到微信客户端补充的参数,才可以在其它平台打开),这就给爬虫程序造成很大困扰.后来在知乎上看到了一位大牛用php写的微信公众号爬取程序,就直接按大佬的思路整了整搞成java的了.改造途中遇到蛮多细节问题,拿出来分享一下. 系统的基本思路是在安卓模拟器上运行微信,模拟器设置代理,通过代理服务器拦截微信数据,将得到的数据发送给自己的程序进行处理. 需要准备的环境:node

  • 微信公众号开发之设置自定义菜单实例代码【java版】

    本实例是为了实现在管理后台实现微信菜单的添加删除管理. 1.首先我们需要新建一个数据库表用于存放menu菜单项 可包含的字段有id.父类id.name.排序.是否显示.类型(view.click).链接.adddate 注意后台存menu菜单数据时,parentId=-1为一级菜单,或parendId为一级菜单的id作为该一级菜单下的二级菜单 2.在设置菜单时需要向微信接口传menuJson字符串,所以要先拼接字符串,后台定义一个creatMenu() public bool creatMenu

  • java微信公众号开发案例

    微信公众号开发一般是针对企业和组织的,个人一般只能申请订阅号,并且调用的接口有限,下面我们就来简单的描述下接入公众号的步骤: 1.首先你需要一个邮箱在微信公众号平台进行注册:      注册的方式有订阅号.公众号.小程序和企业号,个人我们这里只能选择订阅号 2.注册完后,我们登录到公众号平台--->开发--->基本配置,这里需要填写URL和token,URL就是我们使用服务器的接口: 3.Java Web服务器程序编译好且在服务器上部署可以运行的话,可在微信公众号进行在线接口调试: 1).选择

  • Java实现微信公众号自定义菜单的创建方法示例

    本文实例讲述了Java实现微信公众号自定义菜单的创建方法.分享给大家供大家参考,具体如下: 开发公众号的时候可能需要给一些自定义菜单添加事件,比如点击某菜单然后服务端给用户推送信息. 我们也可以使用微信提供的网页调试工具直接生成菜单,不过需要考虑是否影响用户问题. 注意:使用代码自定义菜单事件,手动添加的菜单会失效!谨慎使用! 官方文档 httpClientUtil工具类需要的话可以在前面微信公众号获取access_token中获取 public class WechatDIYMenuTest

  • java微信公众号开发第一步 公众号接入和access_token管理

    本文就来说一说微信开发第一步,公众号接入以及access_token的管理. 一.微信公众号接入 在微信公众号开发手册上,关于公众号接入这一节内容还是写的比较详细的,文档中说接入公众号需要3个步骤,分别是: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 其实,第3步已经不能算做公众号接入的步骤,而是接入之后,开发人员可以根据微信公众号提供的接口所能做的一些开发. 第1步中服务器配置包含服务器地址(URL).Token和EncodingAESKey. 服务器地址即公

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

    最近由于公司业务,就开始研究微信开发的流程,说实话,这东西刚开始看到时候和看天书的一样,总算,看了一天的文档,测试代码终于出来了. 1.首先需要到微信网站去设置一下,我是直接用的微信测试号. 接口配置信息必须要填写的,所以说必须能将自己的服务发布出去 到此微信配置完毕,接下来就是直接上代码了 2.获取用户信息的方式一共是两种,前提都是用户关注微信公众号,一种是静默获取(snsapi_base,这种方式只能获取openid),另一种是授权获取(snsapi_userinfo,可以获取用户的详细信息

随机推荐