QQImpl.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. *
  3. */
  4. package com.yihu.base.security.social.qq.api;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import org.apache.commons.lang.StringUtils;
  7. import org.springframework.social.oauth2.AbstractOAuth2ApiBinding;
  8. import org.springframework.social.oauth2.TokenStrategy;
  9. /**
  10. *
  11. */
  12. public class QQImpl extends AbstractOAuth2ApiBinding implements QQ {
  13. private static final String URL_GET_OPENID = "https://graph.qq.com/oauth2.0/me?access_token=%s";
  14. private static final String URL_GET_USERINFO = "https://graph.qq.com/user/get_user_info?oauth_consumer_key=%s&openid=%s";
  15. private String appId;
  16. private String openId;
  17. private ObjectMapper objectMapper = new ObjectMapper();
  18. public QQImpl(String accessToken, String appId) {
  19. super(accessToken, TokenStrategy.ACCESS_TOKEN_PARAMETER);
  20. this.appId = appId;
  21. String url = String.format(URL_GET_OPENID, accessToken);
  22. String result = getRestTemplate().getForObject(url, String.class);
  23. System.out.println(result);
  24. this.openId = StringUtils.substringBetween(result, "\"openid\":\"", "\"}");
  25. }
  26. /* (non-Javadoc)
  27. * @see com.imooc.security.core.social.qq.api.QQ#getUserInfo()
  28. */
  29. @Override
  30. public QQUserInfo getUserInfo() {
  31. String url = String.format(URL_GET_USERINFO, appId, openId);
  32. String result = getRestTemplate().getForObject(url, String.class);
  33. System.out.println(result);
  34. QQUserInfo userInfo = null;
  35. try {
  36. userInfo = objectMapper.readValue(result, QQUserInfo.class);
  37. userInfo.setOpenId(openId);
  38. return userInfo;
  39. } catch (Exception e) {
  40. throw new RuntimeException("获取用户信息失败", e);
  41. }
  42. }
  43. }