用ssm实现qq登录

1、在qq互联中心注册

地址https://connect.qq.com/manage.html#/


只需要红框里面审核通过就行,创建的应用即使不通过本地测试足够了。

2、点击创建应用,完成信息




3、导入sdk的jar包,这个在互联中心的文档资料里面找,加入到lib包中就OK

4、配置qqconnectconfig.properties,这个也是在文档资料里面的,找一下就能找到

把你的id 和 key 输入,回调地址写成自己的回调地址,还有一点,红框内scope这行很长,拉到最后边,最后有一个(此处可以修改)要把这个给删掉,我就是因为这行太长没看见,搞的我弄了一上午都一直调不了回调地址。


5.控制层

@Controller

@RequestMapping("/qq")
public class QQlogin {


/** 
* @Title: qqlogin 
* @Description: qq登录
* @param request
* @param response
* @throws Exception
* @return: void
*/
@RequestMapping(value="/qqlogin")
public void qqlogin(HttpServletRequest request,HttpServletResponse response) throws Exception{
//设置相应编码
//System.out.println("111");测试使用的
response.setContentType("text/html;charset=utf-8");

try {
//跳转到qq第三方登录界面
response.sendRedirect(new Oauth().getAuthorizeURL(request));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


/** 
* @Title: qqSuccess 
* @Description: 回调函数
* @param request
* @param response
* @param model
* @return
* @throws IOException
* @throws ParseException
* @throws QQConnectException
* @return: String
*/
@RequestMapping(value="/afterQQLogin",method=RequestMethod.GET)
public String qqSuccess(HttpServletRequest request,
HttpServletResponse response,
Model model) throws IOException,ParseException,QQConnectException{

//设置编码格式
response.setContentType("text/html;charset=utf-8");

//默认token,openid
String accessToken=null;
String openID=null;
String qqname=null;//qq昵称
String gender = null;//性别
String msg = null;//异常,用于判定openID时使用,如果说openID是空,那么就使用这个addattribute(“msg”,"错误")
String url50 = null;//接收头像所在地址,然后在前台使用《img》进行接收
try {
AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);

//进行判断
if (accessTokenObj.getAccessToken().equals("")) {
System.out.println("没有获取到相应参数");
}else {
accessToken = accessTokenObj.getAccessToken();
//利用获取的accessTokenm,去获取当前的openID
OpenID openIDObj = new OpenID(accessToken);
openID = openIDObj.getUserOpenID();
}
} catch (QQConnectException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("产生异常的原因是:"+e.getMessage());
}
if (openID==null) {
request.setAttribute("msg", "没有参数哈哈哈哈");
return "qq/qqerror";//发生错误直通错误jsp页面
}else {

//获得空间个人实例对象
UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
System.out.println("空间:"+qzoneUserInfo);
UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();

//获取qq名称
qqname = userInfoBean.getNickname();
//获取性别
gender = userInfoBean.getGender();

//msg = userInfoBean.getMsg();

//获取图片
url50 = userInfoBean.getAvatar().getAvatarURL50();


}
model.addAttribute("openID", openID);
model.addAttribute("qqname", qqname);
model.addAttribute("gender", gender);
//model.addAttribute("msg", msg);
model.addAttribute("url50", url50);
return "qq/qqlogin";

}

}


6、前台页面展示部分,写的比较简陋,大家凑合着看喽

qq/qqlogin.jsp

<body>
登录成功<br>
<div style="float: right;">
欢迎 !!!&nbsp;&nbsp;<h5>${qqname }</h5> <img alt="" src="${url50 }"><br>
性别:${gender }<br>
</div>
<div>
openID:${openID }<br>
url50:${url50 }<br>
</div>
</body>


弄成功的小伙伴不妨给我点个赞呗233333

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值