SpringSecurity+SpringSocial 实现QQ登入(二)

SpringSecurity+SpringSocial 实现QQ登入(二)

上节我们已经把基本代码写完,接着就是通过配置将其串联起来

配置文件编写

由于SpringBoot 1 跟SpringBoot2 有区别此处使用SpringBoot2

QQAutoConfig

在这里插入图片描述
在这里插入图片描述

SocialConfig

在这里插入图片描述

ImoocSpringSocialConfigurer

在这里插入图片描述

QQOAuth2Template
public class QQOAuth2Template extends OAuth2Template {

    private Logger logger = LoggerFactory.getLogger(getClass());

    public QQOAuth2Template(String clientId, String clientSecret, String authorizeUrl, String accessTokenUrl) {
        super(clientId, clientSecret, authorizeUrl, accessTokenUrl);

        setUseParametersForClientAuthentication(true);
    }

    @Override
    protected RestTemplate getRestTemplate() {
        RestTemplate template = super.getRestTemplate();
        //添加处理 text/html的  (qq数据请求的处理区)
        template.getMessageConverters().add(new StringHttpMessageConverter(Charset.forName("utf-8")));
        return template;
    }



    /**
     * 覆盖此方法默认是对json数据进行处理成map
     * 但是qq不是这样的
     * @param accessTokenUrl
     * @param parameters
     * @return
     */
    @Override
    protected AccessGrant postForAccessGrant(String accessTokenUrl, MultiValueMap<String, String> parameters) {
        String result = getRestTemplate().postForObject(accessTokenUrl, parameters, String.class);

        logger.info("获取Access Token 的响应结果" + result);
        //access_token=F679F117539B5042872183269AF866E5&expires_in=7776000&refresh_token=8038A2C14FF2529A412D01D56A6BC7F8

        String[] items = StringUtils.splitByWholeSeparatorPreserveAllTokens(result, "&");

        String access = StringUtils.substringAfter(items[0],"=");
        String accessToken = StringUtils.substringAfterLast(items[0],"=");
        Long expiresIn = new Long(StringUtils.substringAfterLast(items[1],"="));
        String refreshToken = StringUtils.substringAfterLast(items[2],"=");

        return createAccessGrant(accessToken,null,refreshToken,expiresIn,null);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值