springboot 微信小程序授权

本文介绍了一个基于微信小程序的登录系统实现,通过调用微信API进行用户身份验证,并使用Spring框架的RestController接收用户发送的登录请求。文章详细展示了如何利用HttpClientUtil发起HTTP GET请求获取用户会话信息,然后将这些信息存储到Redis中,以便后续的应用操作。

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

微信小程序

controller层

package com.binglian.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import com.binglian.common.BinglianJSONResult;
import com.binglian.common.HttpClientUtil;
import com.binglian.common.JsonUtils;
import com.binglian.common.RedisOperator;
import com.binglian.model.WXSessionModel;

@RestController
public class WXLoginController {

	@Autowired
	private RedisOperator redis;
	
	@PostMapping("/wxLogin")
	public BinglianJSONResult wxLogin(String code){
		
		System.out.println("wxLogin - code:"+code);
		
//		https://api.weixin.qq.com/sns/jscode2session?
//		appid=APPID&
//		secret=SECRET&
//		js_code=JSCODE&
//		grant_type=authorization_code
		
		String url = "https://api.weixin.qq.com/sns/jscode2session";
		Map<String, String> param = new HashMap<>();
		param.put("appid", "wxfea30c0fc402f491");
		param.put("secret", "ab9ec0556bbe1037fe308f85b6450aba");
		param.put("js_code", code);
		param.put("grant_type","authorization_code");

		
		String wxResult = HttpClientUtil.doGet(url,param);
		System.out.println(wxResult);
		
		WXSessionModel model = JsonUtils.jsonToPojo(wxResult, WXSessionModel.class);
		
		//存入session到redis
		redis.set("user-redis-session:"+model.getSession_key(), 
							model.getOpenid(),
				1000*60*30);
		
		String key = redis.get("user-redis-session:"+model.getSession_key());
		System.out.println(key);
		return BinglianJSONResult.ok();
	}
}

 

Redis缓存数据

                String wxResult = HttpClientUtil.doGet(url,param);
		System.out.println(wxResult);
		
		WXSessionModel model = JsonUtils.jsonToPojo(wxResult, WXSessionModel.class);
		
		//存入session到redis
		redis.set("user-redis-session:"+model.getSession_key(), 
							model.getOpenid(),
				1000*60*30);
		
		String key = redis.get("user-redis-session:"+model.getSession_key());

 

 

接受json实体类

package com.binglian.model;

public class WXSessionModel {

	
	private String session_key;
	
	private String openid;

	public String getSession_key() {
		return session_key;
	}

	public void setSession_key(String session_key) {
		this.session_key = session_key;
	}

	public String getOpenid() {
		return openid;
	}

	public void setOpenid(String openid) {
		this.openid = openid;
	}
	
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值