springboot使用 WxJava 实现 微信小程序(uniapp开发)的登陆功能

这篇具有很好参考价值的文章主要介绍了springboot使用 WxJava 实现 微信小程序(uniapp开发)的登陆功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端使用uniapp来开发微信小程序

后端springboot中使用WxJava来做服务端(WxJava是微信服务端开发 的Java SDK

一、微信小程序登陆流程图

该图来源于微信小程序官方文档

springboot使用 WxJava 实现 微信小程序(uniapp开发)的登陆功能,uniapp,微信小程序,uni-app,java

二、前端代码

根据uniapp的官网直接通过它提供的第三方 登陆api直接使用,代码如下


<script setup>
import { onMounted, ref } from "vue";
let nickName = ref('');
let avatarUrl = ref('');
onMounted(()=>{
	getLogin();
});
const getLogin = ()=>{
	uni.login({
	  provider: 'weixin',
	  success: function (loginRes) {
		console.log(loginRes);
		let code = loginRes.code;
		// 获取用户信息
		uni.getUserInfo({
		  provider: 'weixin',
		  success: function (infoRes) {
			console.log(infoRes); 
			nickName.value = infoRes.userInfo.nickName;
			avatarUrl.value = infoRes.userInfo.avatarUrl;
			let param = {
				code: code,       //登陆凭证
				encryptedData: infoRes.encryptedData,  //包括敏感数据在内的完整用户信息的加密数据 
				iv: infoRes.iv,   //加密算法的初始向量,详细见加密数据解密算法
				appId: uni.getAccountInfoSync().miniProgram.appId //小程序的appId
			}
			//提交给服务端
			uni.request({
			    url: 'http://10.72.144.42:8080/wx/auth/login_wx', //仅为示例,并非真实接口地址。
			    method: 'post',
				data: param,
			    header: {
			        // 'custom-header': 'hello' //自定义请求头信息
			    },
			    success: (res) => {
					console.log("提交数据",res);
			    }
			});
		  }
		});
	  }
	});
};
</script>

三、java服务端代码

直接根据WxJava的官方demo

(1) yml配置

#使用weixin-java-miniapp java微信小程序封装的sdk
wx:
  miniapp:
    configs:
        - appid: 1111111111 #微信小程序的appid
          secret: 2222222222 #微信小程序的Secret(登陆凭证)
          token: #微信小程序消息服务器配置的token
          aesKey: #微信小程序消息服务器配置的EncodingAESKey
          msgDataFormat: JSON

(2)两个配置文件

public class WxMaProperties {
    private List<Config> configs;
    @Data
    public static class Config{
        /**
         * 设置微信小程序的appid
         */
        private String appid;

        /**
         * 设置微信小程序的Secret
         */
        private String secret;

        /**
         * 设置微信小程序消息服务器配置的token
         */
        private String token;

        /**
         * 设置微信小程序消息服务器配置的EncodingAESKey
         */
        private String aesKey;

        /**
         * 消息格式,XML或者JSON
         */
        private String msgDataFormat;
    }
}
public class WxMaConfiguration {
    private final WxMaProperties properties;

    //有参构造
    @Autowired
    public WxMaConfiguration(WxMaProperties properties) {
        this.properties = properties;
    }


    @Bean
    public WxMaService wxMaService() {
        List<WxMaProperties.Config> configs = this.properties.getConfigs();
        if (configs == null) {
            throw new WxRuntimeException("大哥,拜托先看下项目首页的说明(readme文件),添加下相关配置,注意别配错了!");
        }
        WxMaService maService = new WxMaServiceImpl();
        maService.setMultiConfigs(
                configs.stream()
                        .map(a -> {
                            WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
//                WxMaDefaultConfigImpl config = new WxMaRedisConfigImpl(new JedisPool());
                            // 使用上面的配置时,需要同时引入jedis-lock的依赖,否则会报类无法找到的异常
                            config.setAppid(a.getAppid());
                            config.setSecret(a.getSecret());
                            config.setToken(a.getToken());
                            config.setAesKey(a.getAesKey());
                            config.setMsgDataFormat(a.getMsgDataFormat());
                            return config;
                        }).collect(Collectors.toMap(WxMaDefaultConfigImpl::getAppid, a -> a, (o, n) -> o)));
        return maService;
    }
}

(3)controller接口代码文章来源地址https://www.toymoban.com/news/detail-613714.html

  @PostMapping("/wx/auth/login_wx")
    public Map getLogin(@RequestBody JSONObject params){
        //得到数据参数
        String code = params.getString("code");
        String encryptedData = params.getString("encryptedData");
        String iv = params.getString("iv");
        String appId = params.getString("appId");

        if (!wxMaService.switchover(appId)) {
            throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appId));
        }
        WxMaJscode2SessionResult session = null;
        WxMaUserInfo wxMaUserInfo = null;
        try {
            //这一行代码就完成了 与微信开放服务端,要回session
            session = wxMaService.getUserService().getSessionInfo(code);
            log.info(session.getSessionKey());
            log.info(session.getOpenid());

            //session_key是对用户数据解密出全部用户数据
            wxMaUserInfo = wxMaService.getUserService().getUserInfo(session.getSessionKey(),encryptedData,iv);
            log.info(wxMaUserInfo.getNickName());
            log.info(wxMaUserInfo.getAvatarUrl());
            //添加自己的逻辑,关联业务相关数据

        } catch (WxErrorException e) {
            e.printStackTrace();
        }

        Map map = new HashMap();
        return map;
    }

到了这里,关于springboot使用 WxJava 实现 微信小程序(uniapp开发)的登陆功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java springboot+uniapp实现微信小程序获取微信手机号

    https://mp.weixin.qq.com/ 用此功能可能需要首页一些列认证完成后才可以:eg:小程序备案、微信认证等 1、获取AppId和AppSecret 侧开发管理-开发设置-需要获取 AppID(小程序ID) 、**AppSecret(小程序密钥) **。 注意:AppSecret第一次生成后需要自己复制保存,后续虽然可以重置但是重置会相

    2024年02月02日
    浏览(52)
  • 如何快速搭建springboot+前后端分离(vue),多商户客户端实现微信小程序+ios+app使用uniapp(一处编写,处处编译)

    kxmalls外卖生鲜多商户,针对中小商户、企业和个人学习者开发。使用Java编码,采用SpringBoot、Mybatis-Plus等易用框架,适合个人学习研究。同时支持单机部署、集群部署,用户与店铺范围动态定位,中小商户企业可根据业务动态扩容。kxmalls使用uniapp前端框架,可同时编译到 微

    2024年01月25日
    浏览(74)
  • 基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现

    💗 博主介绍 :✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅 👇🏻 2023-2024年最值得选的微信小程序毕业设

    2024年02月21日
    浏览(61)
  • 基于Java+SpringBoot+Vue+uniapp微信小程序实现仓储管理系统

    博主介绍 : ✌ 全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟  java项目

    2024年02月09日
    浏览(148)
  • 基于Java+SpringBoot+Vue+uniapp微信小程序外卖系统设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月13日
    浏览(143)
  • uniapp+java/springboot实现微信小程序APIV3支付功能

    微信小程序的支付跟H5的支付和APP支付流程不一样,本次只描述下小程序支付流程。 1.微信小程序账号 文档:小程序申请 小程序支付需要先认证,如果你有已认证的公众号,也可以通过公众号免费注册认证小程序。 一般300元,我是认证的政府的免费。 然后登录小程序,设置

    2023年04月19日
    浏览(47)
  • 基于SpringBoot+uniapp微信小程序校园点餐平台详细设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月05日
    浏览(60)
  • 基于SpringBoot+Vue+uniapp微信小程序的订餐系统的详细设计和实现

    💗 博主介绍 :✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅 👇🏻 2023-2024年最值得选的微信小程序毕业设

    2024年02月22日
    浏览(86)
  • 基于SpringBoot+Vue+uniapp微信小程序的校园跑腿的详细设计和实现

    💗 博主介绍 :✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅 👇🏻 2023-2024年最值得选的微信小程序毕业设

    2024年03月18日
    浏览(67)
  • 基于SpringBoot+Vue+uniapp微信小程序的相亲网站的详细设计和实现

    🌞 博主介绍 :✌全网粉丝15W+,CSDN特邀作者、211毕业、高级全栈开发程序员、大厂多年工作经验、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导✌🌞 👇🏻 精彩专栏

    2024年03月11日
    浏览(69)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包