mtons.oauth2.provider.QQProvider Maven / Gradle / Ivy
/*
+--------------------------------------------------------------------------
| Mtons [#RELEASE_VERSION#]
| ========================================
| Copyright (c) 2014, 2015 mtons. All Rights Reserved
| http://www.mtons.com
+---------------------------------------------------------------------------
*/
package mtons.oauth2.provider;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import mtons.oauth2.OauthUser;
/**
* Created by langhsu on 2017/9/3.
*/
public class QQProvider extends AbstractOauth2Provider {
public QQProvider (){
}
/**
* http://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code
*/
@Override
public String createAuthorizeUrl(String state) {
StringBuilder sb = new StringBuilder("https://graph.qq.com/oauth2.0/authorize?");
sb.append("response_type=code");
sb.append("&client_id=" + getClientId());
sb.append("&redirect_uri=" + getRedirectUri());
sb.append("&state=" + state);
return sb.toString();
}
protected String getAccessToken(String code) {
StringBuilder sb = new StringBuilder("https://graph.qq.com/oauth2.0/token?");
sb.append("grant_type=authorization_code");
sb.append("&code=" + code);
sb.append("&client_id=" + getClientId());
sb.append("&client_secret=" + getClientSecret());
sb.append("&redirect_uri=" + getRedirectUri());
String httpString = httpGet(sb.toString());
// access_token=2D6FE76*****24AB&expires_in=7776000&refresh_token=7CD56****218
if (StringUtils.isBlank(httpString)) {
return null;
}
return httpString.substring(httpString.indexOf("=") + 1, httpString.indexOf("&"));
}
protected String getOpenId(String accessToken, String code) {
StringBuilder sb = new StringBuilder("https://graph.qq.com/oauth2.0/me?");
sb.append("access_token=" + accessToken);
String httpString = httpGet(sb.toString());
// callback(
// {"client_id":"10***65","openid":"F8D32108D*****D"}
// );
if (StringUtils.isBlank(httpString)) {
return null;
}
return httpString.substring(httpString.lastIndexOf(":") + 2, httpString.lastIndexOf("\""));
}
@Override
public OauthUser getUser(String code) {
String accessToken = getAccessToken(code);
if (StringUtils.isBlank(accessToken)) {
return null;
}
String openId = getOpenId(accessToken, code);
if (StringUtils.isBlank(openId)) {
return null;
}
StringBuilder sb = new StringBuilder("https://graph.qq.com/user/get_user_info?");
sb.append("access_token=" + accessToken);
sb.append("&oauth_consumer_key=" + getClientId());
sb.append("&openid=" + openId);
sb.append("&format=format");
String httpString = httpGet(sb.toString());
if (StringUtils.isBlank(httpString)) {
return null;
}
JSONObject json = JSON.parseObject(httpString);
OauthUser user = new OauthUser();
user.setAccessToken(accessToken);
user.setAvatar(json.getString("figureurl_2"));
user.setNickname(json.getString("nickname"));
user.setOpenId(openId);
return user;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy