点这里:https://blog.csdn.net/pan_y95/article/details/77916579
点这里:http://www.360doc.com/content/16/1123/15/14264700_608809855.shtml
package com.lianwei.util;
import com.qq.connect.QQConnectException;
import com.qq.connect.api.OpenID;
import com.qq.connect.api.qzone.UserInfo;
import com.qq.connect.javabeans.AccessToken;
import com.qq.connect.javabeans.qzone.UserInfoBean;
import com.qq.connect.oauth.Oauth;
import javax.servlet.http.HttpServletRequest;
public class QQUtils {
/**
* 利用获取到的accessToken,openid 去获取用户在Qzone的昵称等信息
* @param request
* @return
*/
public static UserInfoBean createUserInfo(HttpServletRequest request){
UserInfoBean userInfoBean=null;
try {
String accessToken = null,
openID = null;
long tokenExpireIn = 0L;
// 第一步-- 得到token类
AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
if (accessTokenObj.getAccessToken().equals("")) {
//我们的网站被CSRF攻击了或者用户取消了授权
//做一些数据统计工作
System.out.println("没有获取到响应参数");
} else {
accessToken = accessTokenObj.getAccessToken();
tokenExpireIn = accessTokenObj.getExpireIn();
request.getSession().setAttribute("demo_access_token", accessToken);
request.getSession().setAttribute("demo_token_expirein", String.valueOf(tokenExpireIn));
// 利用获取到的accessToken 去获取当前用的openid -------- start
OpenID openIDObj = new OpenID(accessToken);
openID = openIDObj.getUserOpenID();
System.out.println("欢迎你,代号为 " + openID + " 的用户!");
request.getSession().setAttribute("demo_openid", openID);
// // 利用获取到的accessToken 去获取当前用户的openid --------- end
System.out.println("<p> start -----------------------------------利用获取到的accessToken,openid 去获取用户在Qzone的昵称等信息 ---------------------------- start </p>");
UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
userInfoBean = qzoneUserInfo.getUserInfo();
if (userInfoBean.getRet() == 0) {
System.out.println(userInfoBean.getNickname() + "<br/>");
System.out.println(userInfoBean.getGender() + "<br/>");
} else {
System.out.println("很抱歉,我们没能正确获取到您的信息,原因是: " + userInfoBean.getMsg());
}
System.out.println("<p> end -----------------------------------利用获取到的accessToken,openid 去获取用户在Qzone的昵称等信息 ---------------------------- end </p>");
}
} catch (QQConnectException e) {
}
return userInfoBean;
}
}
log4j.rootLogger=debug,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
//qq登入
@RequestMapping("/qq")
public void list(HttpServletResponse response, HttpServletRequest request) throws IOException, QQConnectException {
response.setContentType("text/html;charset=utf-8");
//一定要用这句话去弹出qq登录窗口,否则AccessToken会提示没有获取到响应参数
response.sendRedirect(new Oauth().getAuthorizeURL(request));
}
// 申请 网站回调域-到后台的方法
@RequestMapping("/qqhou")
public String showIndexHtml(String code,String state,HttpServletRequest request,HttpServletResponse response) throws IOException, QQConnectException{
UserInfoBean user= QQUtils.createUserInfo(request);
System.out.println("user.getNickname()= "+user.getNickname());
// System.out.println(request.getSession().getAttribute("demo_openid"));
return "qq";
}
网友评论