springboot 微信小程序授权

微信小程序

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;
	}
	
	
}

 

在Spring Boot项目中集成微信小程序获取用户OpenID通常涉及到微信小程序的OAuth授权流程。以下是简单的步骤: 1. **注册并配置**: 首先,在微信公众平台上注册小程序,并在"开发者中心" -> "设置" -> "服务器配置"中,配置好AppID和AppSecret。 2. **添加依赖**: 添加Spring Cloud Alipay或者微信SDK的依赖到你的项目中,比如`spring-boot-starter-wechat`。 3. **配置服务端授权URL**: 在配置文件中配置微信的授权地址和redirect_uri,这是小程序回调的地址。 4. **引导用户授权**: 在前端页面,通过微信提供的API跳转到授权页面,让用户体验授权过程。 5. **处理授权结果**: 用户授权后,微信会将code作为参数回调到指定的redirect_uri。你需要在后端解析这个code,然后通过微信提供的API换取access_token和openid。 6. **保存openid**: 用得到的openid关联用户的账号信息,通常会持久化存储在数据库中。 ```java // 示例代码(仅供参考) String code = request.getParameter("code"); WXApi wxApi = new WXApi(); Map<String, String> params = new HashMap<>(); params.put("appid", wechatConfig.getAppId()); params.put("secret", wechatConfig.getSecret()); params.put("code", code); params.put("grant_type", "authorization_code"); WXAuthResponse authResp = wxApi.fetchAuthCode(params); if (authResp.isSucc()) { // 使用access_token换取openid Map<String, String> accessTokenParams = new HashMap<>(); accessTokenParams.put("appid", wechatConfig.getAppId()); accessTokenParams.put("secret", wechatConfig.getSecret()); accessTokenParams.put("code", code); accessTokenParams.put("grant_type", "authorization_code"); // ...进一步获取access_token和openid... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值