《Java后端安全开发Spring Security开发REST服务》4章-5——social security 微信

本文详细介绍了如何在Java后端使用Spring Security与微信API进行集成,实现REST服务的安全认证。主要内容包括覆盖WeixinImpl的getMessageConverters方法以处理字符集问题,使用WeixinOAuth2Template与微信服务器交互获取access_token和openId,以及定制WeixinConnectionFactory和WeixinAdapter以适应微信的特有流程。此外,还讨论了用户绑定和解绑微信账号的实现过程。
摘要由CSDN通过智能技术生成

1. WeixinImpl

1.1 getMessageConverters

默认注册的StringHttpMessageConverter字符集为ISO-8859-1,而微信返回的是UTF-8的,所以覆盖了原来的方法。

2. Weixin

WeixinUserInfo getUserInfo(String openId);
对比QQ多了一个参数openid,因为微信认证服务器在返回accessToken时,会一同吧openId也返回,无需再单独用accessToken去申请openId

3. WeixinAccessGrant

  1. extends AccessGrant
  2. 多一个openId字段
    存放accessToken一同返回的openId

4. WeixinOAuth2Template

4.1 exchangeForAccess

appid、secret参数名字有区别

4.2 getAccessToken

accessToken.setOpenId(MapUtils.getString(result, “openid”));
微信认证服务器额外返回了openId

5. WeixinAdapter

多一个openId字段

6. WeixinServiceProvider

同QQServiceProvider

7. WeixinConnectionFactory

7.1 重载extractProviderUserId

由于微信的openId是和accessToken一起返回的,所以在这里直接根据accessToken设置providerUserId即可,不用像QQ那样通过QQAdapter来获取

	/**
	 * 由于微信的openId是和accessToken一起返回的,所以在这里直接根据accessToken设置providerUserId即可,不用像QQ那样通过QQAdapter来获取
	 */
	@Override
	protected String extractProviderUserId(AccessGrant accessGrant) {
   
		if(accessGrant instanceof WeixinAccessGrant) {
   
			return ((WeixinAccessGrant)accessGrant).getOpenId();
		}
		return null;
	}

7.2 重载createConnection

这里与QQConnectionFactory的区别是,初始化Connection时,创建了新的WeinxinAdapter,而QQConnectionFactory使用没有重载createConnection方法,使用默认实现,默认实现使用了一个全局统一的ApiAdapter

/**
 * 
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值