Java 后端获取 微信用户 openid

一、 前端

前端获取当前用户的用户授权码 code

二、后端

获取微信小程序的 openid

/**
  * 得到openId—
   * @param appid 小程序ID
   * @param key 小程序密钥
   * @param code  前端传入 用户授权码
   * @return
   */
private Sting getOpenId(String appid, String key, String code, String type) {
     String openId = null;
     String resultOpen = PayCommonUtil.sendGet("https://api.weixin.qq.com/sns/jscode2session",
             "appid=" + appid +//小程序ID
                     "&secret="+ key + //小程序密钥
                     "&js_code="+ code + //前端 传入 code
                     "&grant_type=authorization_code");
     JSONObject jsonObject = JSONObject.parseObject(resultOpen);
     if (jsonObject.containsKey("errcode")) {
         log.info("code无效,openId获取失败——小程序获取");
       	/*
       	个人业务代码
       	*/
     }
     openId = jsonObject.get("openid").toString();
     return openId ;
 }

获取微信公众号的 openid

/**
  * 得到openId—
   * @param appid 公众号ID
   * @param key 公众号密钥
   * @param code  前端传入 用户授权码
   * @return
   */
private Sting getOpenId(String appid, String key, String code, String type) {
     String openId = null;
     String  resultOpen = PayCommonUtil.sendGet("https://api.weixin.qq.com/sns/oauth2/access_token",
                    "appid=" + appid +//公众号ID
                            "&secret="+ key + //公众号密钥
                            "&code="+ code + //前端 传入 code
                            "&grant_type=authorization_code");
     JSONObject jsonObject = JSONObject.parseObject(resultOpen);
     if (jsonObject.containsKey("errcode")) {
         log.info("code无效,openId获取失败——小程序获取");
       	/*
       	个人业务代码
       	*/
     }
     openId = jsonObject.get("openid").toString();
     return openId ;
 }

三、注意

1、 code 在一定时间段是不变的,不可重复是否
2、 小程序和公众号获取 用户openid ,就获取地址不同
3、官方文档: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值