E企盈营销工具技术服务商 热线:4006-838-530

微信小程序获取用户信息后端写法

E企盈直播平台营销卖货系统

之前介绍了两种小程序获取用户信息的写法,其中第二种需要后端配合完成。后端我使用了一个第三方的 jar 包:我使用的是 2.9.6.BETA 版本。这个版本提供了通过微信参数解析用户信息的方法,只要在配置文件中把微信小程序的信息配置完成就可以直接使用,非常方便。直接看后台获取用户信息和生成第三方token 的方法,这里的生成方式是直接使用 java 自带的方法:@Autowiredprivate RedisUtil redisUtil;@Autowiredprivate WxMaService wxService;@RequestMapping(value = “/login_status”, method = RequestMethod.GET)public String getLoginStatus(@RequestParam(value = “code”) String code,@RequestParam(value = “signature”) String signature, @RequestParam(value = “rawData”) String rawData, @RequestParam(value = “encryptedData”) String encryptedData, @RequestParam(value = “iv”) String iv) throws WxErrorException {if(StringUtils.isEmpty(code)) {return “无效的code”;}else {//存在有效的 codeSystem.out.println(“这里请求了一次code==========” + code);WxMaJscode2SessionResult session = this.wxService.getUserService().getSessionInfo(code);String sessionKey = session.getSessionKey();//通过openId sessionKey 生成3rd session 返回给客户端小程序String accessToken = UUID.randomUUID().toString();// 用户信息校验        if (!this.wxService.getUserService().checkUserInfo(sessionKey, rawData, signature)) {        return “用户信息校验失败”;        }     // 解密用户信息        WxMaUserInfo userInfo = this.wxService.getUserService().getUserInfo(sessionKey, encryptedData, iv);        System.out.println(userInfo);        System.out.println(“accessToken : ” + accessToken);        redisUtil.set(“asdfKevin”, accessToken, 180L);        return accessToken;} 其中的 wxService 是上述 jar 自带的内容,redisUtil 是我自己封装的 redis 的读取工具类,比较简单就不说了。代码逻辑非常简单,直接看就能看懂,最后 token 存到了 redis 中,备用。另外 wxService 需要的两个配置类,代码如下:import org.apache.commons.lang3.builder.ToStringBuilder;import org.apache.commons.lang3.builder.ToStringStyle;import org.springframework.boot.context.properties.ConfigurationProperties;import lombok.Data;@ConfigurationProperties(prefix = “wechat.miniapp”)@Datapublic class WxMaProperties {    private String appid;    private String secret;    private String token;    private String aesKey;    private String msgDataFormat;    @Override    public String toString() {        return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);    }} import javax.servlet.Filter;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.kevin.crystal.filter.KevinTokenFilter;import cn.binarywang.wx.miniapp.api.WxMaService;import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;import cn.binarywang.wx.miniapp.config.WxMaConfig;import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;@Configuration@ConditionalOnClass(WxMaService.class)@EnableConfigurationProperties(WxMaProperties.class)public class WxMaConfiguration {    @Autowired    private WxMaProperties properties;    @Bean    @ConditionalOnMissingBean    public WxMaConfig config() {        WxMaInMemoryConfig config = new WxMaInMemoryConfig();        config.setAppid(this.properties.getAppid());        config.setSecret(this.properties.getSecret());        config.setMsgDataFormat(this.properties.getMsgDataFormat());        return config;    }    @Bean    @ConditionalOnMissingBean    public WxMaService wxMaService(WxMaConfig config) {        WxMaService service = new WxMaServiceImpl();        service.setWxMaConfig(config);        return service;    }    @Bean    public Filter kevinTokenFilter() {    System.out.println(“—————-test token filter—————–“);    return new KevinTokenFilter();    }    @Bean    public FilterRegistrationBean tokenFilter() {    FilterRegistrationBean registration = new FilterRegistrationBean();    registration.setFilter(kevinTokenFilter());    registration.addUrlPatterns(“/api/*”);//    registration.addInitParameter(“”, “”);    registration.setName(“tokenFilter”);        return registration;    }} 其中java 代码中读取的配置文件需要正确配置小程序的 app id 和 app secret 。至此,后台获取微信用户的信息的方法就介绍完了。如果你是源码复制,发现一个东西 KevinTokenFilter,聪明的你一猜就知道,这个就是我之前提到的过滤小程序后续请求中是否存在自定义token 的方法啦。下一篇介绍使用 filter 过滤请求头的一种实现方法。

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序获取用户信息后端写法
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏