微信小程序后端开发关键点指引

开发微信小程序需要前后端一起配合,前端通过微信提供的工具开发,实际页面、样式及JS代码部署在微信服务器;后端可以通过JAVA语言开发,实现具体业务逻辑并与数据库、Redis缓存、MQ等进行交互,代码部署在开发者服务器;调用微信提供的API时,后端开发关键点有两个:

一、在前端调用wx.login() 获取 临时登录凭证code之后,将code字符串发送给后端,后端通过auth.code2Session接口获取用户唯一标识 OpenID 。

为什么非要获取OpenID?因为一个微信小程序客户在此微信小程序之内,这个OpenID是唯一的,在客户登录、使用小程序的整个过程中,开发者的后端服务就是通过它来区分不同用户的。
前端的code只是临时凭证,是有时效性的,统一OpenID的用户在每次登录小程序时code不一样。

后端获取OpenID非常简单,遵循微信小程序提供的帮助文档就成,直接Get这个地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code, 将appid、secret、js_code、grant_type放进去,然后解析出返回的JSON串就可以啦。
比如用SpringBoot开发,可以将getOpenId封装成一个服务方法,在登录的时候直接调用就可以啦。
代码如下:

@Override
public CodeToSessionEntity getOpenId(String code, String logUniqueFlag) {
    String requestUrl = mallConstant.getWx_getopenid_url();
    String appId = mallConstant.getWx_appid();
    String secret = mallConstant.getWx_appSecret();
    String getUrlPath = requestUrl + "?" + "appid=" + appId + "&secret=" + secret + "&js_code=" + code + "&grant_type=authorization_code";
    try {
        sessionEntity = restTemplate.getForObject(getUrlPath, CodeToSessionEntity.class);
    } catch (Exception e) {
        log.error("{}-根据code从微信小程序获取OpenId的值发起请求,出现了异常!e={}", logUniqueFlag, e);
    }
    log.info("{}-根据code从微信小程序获取OpenId的值发起请求,url={},result={}", logUniqueFlag, getUrlPath, sessionEntity.toString());
    return sessionEntity;
}

调用处代码如下:

CodeToSessionEntity sessionEntity = weiXinService.getOpenId(code, mtmWxCodeReq.getLogUniqueFlag());

二、后端业务逻辑如果打算调用微信提供的活体认证(生物认证)、物流助手、大数据分析能力,那么就需要access_token,这个access_token是调用这些api的接口调用凭证。

比如说调用生物认证能力,必须得有access_token。
在这里插入图片描述
获取access_token比获取OpenID还要简单,只要Get这个地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET, 将appid、secret放进去,然后解析出返回的JSON串就成。

“模拟大量微信小程序用户对平台进行并发访问的性能测试指引”请参考
https://blog.csdn.net/pharos/article/details/89397826

发布了27 篇原创文章 · 获赞 17 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/pharos/article/details/89607502