java实现微信小程序登录

一、引入核心pom

csharp 复制代码
        <!-- 微信小程序 -->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-miniapp</artifactId>
            <version>4.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>

二、注入依赖配置

csharp 复制代码
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.WxMaUserService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;


@Slf4j
@Configuration
public class WxClientConfig {

    //小程序服务
    @Value("${wx.mini.appId}")
    private String miniAppId;
    @Value("${wx.mini.secret}")
    private String miniSecret;
    private WxMaUserService wxMaUserService;

    @PostConstruct
    public void init() {
        //微信小程序
        WxMaDefaultConfigImpl wxMaConfig = new WxMaDefaultConfigImpl();
        wxMaConfig.setAppid(miniAppId);
        wxMaConfig.setSecret(miniSecret);

        WxMaService wxMaService = new WxMaServiceImpl();
        wxMaService.setWxMaConfig(wxMaConfig);
        this.wxMaUserService = wxMaService.getUserService();
    }

    @Bean(name = "wxMaUserService")
    public WxMaUserService wxMaUserService(){
        return this.wxMaUserService;
    }

三、跟进微信CODE 获取openId

csharp 复制代码
    @Resource
    private WxMaUserService wxMaUserService;
        //根据授权code获取微信用户信息
    WxMaJscode2SessionResult session = wxMaUserService.getSessionInfo(authDto.getCode());
   WxMaUserInfo wxUser = wxMaUserService.getUserInfo(session.getSessionKey(), authDto.getEncryptedData(), authDto.getIv());

四、根据微信CODE 获取手机信息

csharp 复制代码
            String phoneNumber = wxMaUserService.getPhoneNoInfo(bindDto.getCode()).getPhoneNumber();
相关推荐
R1nG8637 分钟前
多线程安全设计 CANN Runtime关键数据结构的锁优化
开发语言·cann
初次见面我叫泰隆8 分钟前
Qt——5、Qt系统相关
开发语言·qt·客户端开发
亓才孓13 分钟前
[Class的应用]获取类的信息
java·开发语言
开开心心就好21 分钟前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
Never_Satisfied25 分钟前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
80530单词突击赢34 分钟前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
3GPP仿真实验室1 小时前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
devmoon1 小时前
在 Polkadot 上部署独立区块链Paseo 测试网实战部署指南
开发语言·安全·区块链·polkadot·erc-20·测试网·独立链
lili-felicity1 小时前
CANN流水线并行推理与资源调度优化
开发语言·人工智能
爬山算法1 小时前
Hibernate(87)如何在安全测试中使用Hibernate?
java·后端·hibernate