微信登录实际流程和QQ差不多,就是其获取接口入参和出差不同,所以需要进行一些修改
主要的配置有:
- Properties
- API
- OAuth2Operation
- ServiceProvider
- ConnectionFactory
- AutoConfiguration
这里不光针对微信,对于其他的第三方登录也是一样
微信Properties
1 | "enbuys.weixin.security") ( |
和QQ一模一样
微信API
微信Bean
1 | public class WeixinUserInfo { |
微信API接口
1 | public interface Weixin { |
这里多了一个openId参数,是因为微信认证没有按照标准的OAuth协议,他是返回accessToken授权码时直接返回openId,因为SpringSocial使用了标准OAuth协议,调用接口是只会给你授权码,所以openId我们必须通过参数传递
微信API接口实现
1 | public class WeixinImpl extends AbstractOAuth2ApiBinding implements Weixin { |
微信ServiceProvider
微信AccessGrant
因为微信openId是直接返回的,所以首先需要创建一个WeixinAccessGrant添加openId字段
1 | /** |
微信OAuth2Template
这里需要大量调整,因为微信的入参没有按照标准OAuth协议,需要对入参和返回值进行封装,这里也不用过多研究,因为不同的第三方登录肯定都是不同的,没法面面俱到
1 | /** |
ServiceProvider
这个和QQ的基本一致
1 | /** |
微信Adapter
和QQ基本一致
1 | /** |
微信ConnectionFactory
这里需要大量调整,因为微信的返回值openId没有按照标准OAuth协议,需要对返回值进行封装,这里也不用过多研究,因为不同的第三方登录肯定都是不同的,没法面面俱到
1 | /** |
微信AutoConfiguration
1 |
|
和QQ一致
配置文件和登录页面
1 | wxd99431bbff8305a0 = |
1 | <a href="/qqLogin/weixin">微信登录</a> |
启动测试
点击微信登录,跳转页面
扫码后因为没有注册,跳转注册页,并显示我的用户信息
这里因为我的昵称是emoji图标,所以报错,修改ID后尝试
存库成功
重新登录后访问接口
成功访问,说明认证成功