第三方登录之QQ登录

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查看实例

猜你喜欢

转载自service201503251905.iteye.com/blog/2196038