Spring实现微信授权登录
OAuth 核心
OAuth 的核心是向第三方应用颁发令牌。OAuth提供了四种获取令牌的授权方式:
授权码(authorization-code)、隐藏式(implicit)、密码式(password)、客户端凭证(client credentials)。
微信登陆采用的是授权码模式。
微信开放平台注册网站
注册用户,添加网站应用,获取appid、appSecret、redirect_uri。
appid:应用唯一标识,微信通过这个id来识别是那个网站应用来访问的。
appSecret:应用接口使用密钥,要严格保密。一般保存在后台服务器上。
redirect_uri:微信开放平台授权回调域,用户扫描二维码并同意授权之后回调的域名。
微信授权登录流程
- 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
- 通过code参数加上AppID和AppSecret等,通过API换取access_token、openid;
- 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
引入依赖
1 | // https://mvnrepository.com/artifact/com.alibaba/fastjson |
返回类实现
Response模板实现
1 | import com.alibaba.fastjson.JSONObject; |
Response枚举类实现
1 | public enum ResponseEnum { |
Response实现
1 | import com.alibaba.fastjson.JSONObject; |
HTTP请求类实现
1 | import com.alibaba.fastjson.JSON; |
微信配置参数实现
1 | import org.springframework.beans.factory.annotation.Value; |
用户微信信息实体实现
1 | import lombok.AllArgsConstructor; |
服务层实现
服务层接口
1 | import com.demo.common.ServerResponse; |
服务层实现
1 | import com.alibaba.fastjson.JSONObject; |
控制层实现
1 | import com.demo.common.ServerResponse; |