1.进入腾讯QQ互联网站http://connect.qq.com/ 申请APP KEY(此处不详解)
拿到
APP ID
APP KEY
2.下载SDK(http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/doc/qqConnect_Server_SDK_java_v2.0.zip)
解压将Sdk4J.jar放到你lib目录下,将qqconnectconfig.properties文件放在source目下
修改此文件中的
app_ID = 100****(请修改此处 为你申请的APP ID)
app_KEY = ******(请修改此处 为你申请的APP KEY)
redirect_URI = ***********(请修改此处 此处为登陆成功后请求的uri)
3在页面上放置<a href='/qq-login.html'> 点此发送后台请求,
@RequestMapping(method=RequestMethod.GET,value="qq-login")
public String qqLogin(HttpServletRequest request){
String url = null;
try {
url = new Oauth().getAuthorizeURL(request);
} catch (QQConnectException e) {
e.printStackTrace();
}
return "redirect:" + url;
}
请求跳转到QQ授权页 授权成功后将返回我们配置redirect_URI请求,
@RequestMapping(method=RequestMethod.GET,value="qq-redirect")
public String qqRedirect(){
return "redirect:main.html";
}
此处已经登录成功返回我们自己的页面。
这样还不够,因为我们还需要拿到QQ返回给我们的信息。请看下面,
我写了个如下的方法
try {
AccessToken accessTokenObj = new Oauth().getAccessTokenByRequest(request);
if(StringUtils.isBlank(accessTokenObj.getAccessToken())){
throw new ServiceException("QQ登陆失败");
}
String token = accessTokenObj.getAccessToken();
OpenID openIdObj = new OpenID(token);
String openID = openIdObj.getUserOpenID();
com.qq.connect.api.qzone.UserInfo qzoneUserInfo = new com.qq.connect.api.qzone.UserInfo(token, openID);
UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
if(userInfoBean.getRet() == 0) {
UserInfo userInfo = new UserInfo();
userInfo.setUserName(userInfoBean.getNickname());
userInfo.setSex(userInfoBean.getGender());
userInfo.setIcon(userInfoBean.getAvatar().getAvatarURL50());
com.qq.connect.api.weibo.UserInfo weiboUserInfo = new com.qq.connect.api.weibo.UserInfo(accessToken, openID);
com.qq.connect.javabeans.weibo.UserInfoBean weiboUserInfoBean = weiboUserInfo.getUserInfo();
if (weiboUserInfoBean.getRet() == 0) {
Calendar cal = Calendar.getInstance();
cal.set(weiboUserInfoBean.getBirthday().getYear(), weiboUserInfoBean.getBirthday().getMonth(), weiboUserInfoBean.getBirthday().getDay());
userInfo.setBirthday(cal.getTime());
//System.out.println("<p>所在地:" + weiboUserInfoBean.getCountryCode() + "-" + weiboUserInfoBean.getProvinceCode() + "-" + weiboUserInfoBean.getCityCode()
// + weiboUserInfoBean.getLocation());
}
}
}
throw new ServiceException(userInfoBean.getMsg());
} catch (QQConnectException e) {
throw new ServiceException(e.getMessage());
}
我们就拿到了QQ信息 由于QQ号我们是拿不到的,但我们可以通过openID来辨识。
qqConnect_Server_SDK_java_v2.0.zip 中有些例子不懂的可以去看看 。
附(在本人申请app key的过程中出现了一个小插曲,由于授权成功返回的请求页面上没有显示QQ的昵称,一直不给我审核通过,但却提示登录图标放置不正确。最后问客服才知道不是这个问题,希望后来人不要走弯路)
欢迎访问宙王仆
http://www.zhouwangpu.com/login.html查看实例