QQOAuth2Template.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. *
  3. */
  4. package com.yihu.base.security.social.qq.connet;
  5. import org.apache.commons.lang.StringUtils;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.http.converter.StringHttpMessageConverter;
  9. import org.springframework.social.oauth2.AccessGrant;
  10. import org.springframework.social.oauth2.OAuth2Template;
  11. import org.springframework.util.MultiValueMap;
  12. import org.springframework.web.client.RestTemplate;
  13. import java.nio.charset.Charset;
  14. /**
  15. *
  16. */
  17. public class QQOAuth2Template extends OAuth2Template {
  18. private Logger logger = LoggerFactory.getLogger(getClass());
  19. public QQOAuth2Template(String clientId, String clientSecret, String authorizeUrl, String accessTokenUrl) {
  20. super(clientId, clientSecret, authorizeUrl, accessTokenUrl);
  21. setUseParametersForClientAuthentication(true);
  22. }
  23. @Override
  24. protected AccessGrant postForAccessGrant(String accessTokenUrl, MultiValueMap<String, String> parameters) {
  25. String responseStr = getRestTemplate().postForObject(accessTokenUrl, parameters, String.class);
  26. logger.info("获取accessToke的响应:"+responseStr);
  27. String[] items = StringUtils.splitByWholeSeparatorPreserveAllTokens(responseStr, "&");
  28. String accessToken = StringUtils.substringAfterLast(items[0], "=");
  29. Long expiresIn = new Long(StringUtils.substringAfterLast(items[1], "="));
  30. String refreshToken = StringUtils.substringAfterLast(items[2], "=");
  31. return new AccessGrant(accessToken, null, refreshToken, expiresIn);
  32. }
  33. @Override
  34. protected RestTemplate createRestTemplate() {
  35. RestTemplate restTemplate = super.createRestTemplate();
  36. restTemplate.getMessageConverters().add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
  37. return restTemplate;
  38. }
  39. }