http://connect.qq.com/ QQ应用开发
http://open.weibo.com 新浪微博应用开发
首先注册申请开发者应用
申请一个appkey和App Secret,这个是入口,必须获取到这两个才能进行接下来的接入工作
其次下载应用对应的Sdk,比如QQ,下载:Sdk4j.jar,新浪微博,下载weibo4j-oauth2-beta3.1.1.zip,并将解压后的src目录下的weibo4j拷贝到对应项目的src目录
页面部分
<a href="javascript:;" οnclick="sinaToLogin()" title="新浪微博登录"><img src="<%=path%>/resources/skins/ico/ico_42.gif" width="27" height="22"></a>
<a href="<%=path%>/qqlogin.htm" title="QQ登陆"><img src="<%=path%>/resources/skins/ico/ico_43.gif" width="20" height="23"></a>
function sinaToLogin(){
window.location.assign("https://api.weibo.com/oauth2/authorize?client_id=*********&response_type=code&redirect_uri=********/weibocellback.htm");
}
Java后台部分
/**
* 方法描述:首页QQ登陆
*/
public void qqlogin() throws Exception {
if (startTime == 0L) {
startTime = new Date().getTime();
}
response.setContentType("text/html;charset=utf-8");
response.sendRedirect(new Oauth().getAuthorizeURL(request));
}
/**
* 方法描述:QQ回调
*/
public String qqcellback() throws Exception {
response.setContentType("text/html;charset=utf-8");
if (accessTokenObj.getAccessToken().equals("")) {
// 网站受到CSRF攻击或者用户取消了授权
logger.info("网站受到CSRF攻击或者用户取消了授权,没有获取到响应参数");
request.getSession().setAttribute("errormsg", "用户登陆失败");// 登陆页面提示信息
tx.ice_getCommunicator().destroy();
return "login1";// 返回登陆页面
} else {
// 获得用户授权
accessToken = accessTokenObj.getAccessToken();
tokenExpireIn = accessTokenObj.getExpireIn();
// 利用获取到的accessToken 去获取当前用户的openid
OpenID openIDObj = new OpenID(accessToken);
openID = openIDObj.getUserOpenID();
UserInfo userInfo = new UserInfo(accessToken, openID);
UserInfoBean userInfoBean = userInfo.getUserInfo();
if (userInfoBean.getRet() == 0) {
logger.info("会员的名字"+userInfoBean.getNickname());
member.setName(userInfoBean.getNickname());// 封装会员信息:会员的名字
logger.info("会员的性别"+userInfoBean.getGender());
member.setSex(userInfoBean.getGender()=="女"?"0":"1");// 封装会员信息:会员的性别
} else {
logger.info("很抱歉,我们没能正确获取到您的信息,原因是: "+ userInfoBean.getMsg());
}
。。。。。。。。省略
}
public void weibologin(){
try {
BareBonesBrowserLaunch.openURL(new Oauth().authorize("code", ""));
} catch (WeiboException e) {
e.printStackTrace();
logger.info(e);
}
}
public String weibocellback(){
String code = request.getParameter("code");
Oauth oauth = new Oauth();
AccessToken token = oauth.getAccessTokenByCode(code);
String accString = token.toString();
logger.info(accString);//日志
String str[] = accString.split(","); //截取字符串,获得accessToken和uid
String accessToken= str[0].split("=")[1];
logger.info(accessToken);//日志
String str1[] = str[3].split("]");
String uid = str1[0].split("=")[1];
logger.info(uid);//日志
member.setWeibouid(uid);//用户ID
Users um = new Users(accessToken);
User user = um.showUserById(uid);
if(user!=null){
logger.info("会员的名字"+user.getScreenName());
member.setName(user.getScreenName());// 封装会员信息:会员的名字
logger.info("会员的性别"+user.getGender());
member.setSex(user.getGender()=="m"?"1":"0");// 封装会员信息:会员的性别
}else{
logger.info("很抱歉,我们没能正确获取到用户id="+uid+"的信息");
}
}