微信小程序如何获取OpenID

本文介绍了微信小程序中获取用户唯一标识OpenID的方法,包括前端和后端的实现步骤。前端通过app.js进行操作,而后端则涉及后台配置和发送GET请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信小程序如何获取OpenID

前端获取openid的方式(openid为用户唯一标识)

  • app.js
App({
    /**
     * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
     */
    onLaunch: function () {
        var that = this;
        wx.login({
            success:res=>{                          // 每次用户登录都会拿到一个code
                wx.request({
                    url: that.globalData.wx_url_1 + res.code + that.globalData.wx_url_2,
                    success:res=>{
                        that.globalData.openid = res.data.openid;
                    }
                })
            }
        });
    },
 
    /**
     * 设置全局变量
     */
    globalData: {
        openid:0,
        wx_url_1: 'https://api.weixin.qq.com/sns/jscode2session?appid=自己的APPID&secret=自己的SECRET&js_code=',
        wx_url_2: '&grant_type=authorization_code'
    }
})

后端获取openid的方式

  • app.js
App({
  /**
   * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
   */
  onLaunch: function () {
    var that = this;
    wx.login({
      success: res => {           每次用户登录都会拿到一个code
        console.log('用户code');
        console.log(res.code);
        wx.request({
          url: 'http://localhost:8082/UserCenter',
          method: 'POST',
          header: { "content-type": 'application/json' },
          data: {
            "head": {
              "appVerNo": "1.0.0",
              "functionNo": "WeChatLoginVerification"
            },
            "param": {
              "weChatCode": res.code
            }
          },
          dataType: 'json',
          responseType: 'text',
          success(res) {
            console.log('666');
            console.log(res);
            that.globalData.openid = res.data.data.openId;
          },
          fail(res) { console.log(res) },
        })
      }
    });
  },

  /**
   * 设置全局变量
   */
  globalData: {
    openid: null,
    userInfo:null
  }
})

  • 后台

在这里插入图片描述
在这里插入图片描述

/**
*@description:微信登录
*/
Public void weChatLoginVerificationRequestProcess(){
	String weChatCode=dataCenterService.getData("weChatCode");
	System.out.println("------weChatCode------"+weChatCode);
	
	//获取sessionKeyAndOpenId的api
	String getSesionKeyURL=getSessionKeyAPI+"?appid="+appId+"&secret="+appsecret+"&js_code="
	+weChatCode+"&grant_type=authorization_code";
	System.out.println("------getSesionKeyURL---------"+getSesionKeyURL);
	
	//获取到sessionKeyAndOpenId的json数据
	String returnSesionKeyAndOpendIdJson=CommonUtil.sendGetRequest(getSesionKeyURL);
	
	//连接超时
	if(returnSesionKeyAndOpendIdJson==null){
		ExceptionUtil.setFailureMsgAndThrow(cn.edu.fjnu.towide.ww.usercenter.enums.ReasonOfFailure.REQUEST_TIMED_OUT_CODE);
	}
	System.out.println("---------returnSesionKeyAndOpendIdJson--------"+returnSesionKeyAndOpendIdJson);
	JSONObject jsonObject=JSONObject.parseObject(returnSesionKeyAndOpendIdJson);
	String errcode=jsonObject.getString("errcode");
	if(WeChatReasonOfFailureConstant.ERRMSG_CODE.equals(errcode)){
		ExceptionUtil.setFailureMsgAndThrow(ReasonOfFailure.INVALID_CODE_CODE);
	}elseif(WeChatReasonOfFailureConstant.ERRMSG_CODE_BEEN_USED_CODE.equals(errcode)){
		ExceptionUtil.setFailureMsgAndThrow(ReasonOfFailure.INVALID_CODE_CODE);
	return;
	}
	String openId=jsonObject.getString("openid");
	String sessionKey=jsonObject.getString("session_key");
	//StringexpiresIn=jsonObject.getString("expires_in");//暂时未用到
	System.out.println("-----openId--------"+openId);
	ResponseData responseData=dataCenterService.getData("responseData");
	ResponseDataUtil.setHeadOfResponseDataWithSuccessInfo(responseData);
	ResponseDataUtil.putValueToData(responseData,"openId",openId);
}

  • yml
wechat:
	app_id:
	app_secret:
	get_session_key_api:
  • 如何向第三方发送get请求:

https://blog.youkuaiyun.com/weixin_44308214/article/details/109724173

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值