第三方qq登陆(支持扫码)

1 导包

	<dependency>
		<groupId>net.gplatform</groupId>
		<artifactId>Sdk4J</artifactId>
		<version>2.0</version>
	</dependency>

2 配置

最好查看qq给出的demo例子
创建 qqconnectconfig.properties放在resources根目录下
redirect_URI = http://javatv.cn/loginAfter为登录之后重定向跳转的地址

app_ID = 这里填域名id
app_KEY = 这里填域名的key
redirect_URI = http://域名/loginAfter
scope = get_user_info,add_topic,add_one_blog,add_album,upload_pic,list_album,add_share,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idollist,add_idol,del_ido,get_tenpay_addr
baseURL = https://graph.qq.com/
getUserInfoURL = https://graph.qq.com/user/get_user_info
accessTokenURL = https://graph.qq.com/oauth2.0/token
authorizeURL = https://graph.qq.com/oauth2.0/authorize
getOpenIDURL = https://graph.qq.com/oauth2.0/me
addTopicURL = https://graph.qq.com/shuoshuo/add_topic
addBlogURL = https://graph.qq.com/blog/add_one_blog
addAlbumURL = https://graph.qq.com/photo/add_album
uploadPicURL = https://graph.qq.com/photo/upload_pic
listAlbumURL = https://graph.qq.com/photo/list_album
addShareURL = https://graph.qq.com/share/add_share
checkPageFansURL = https://graph.qq.com/user/check_page_fans
addTURL = https://graph.qq.com/t/add_t
addPicTURL = https://graph.qq.com/t/add_pic_t
delTURL = https://graph.qq.com/t/del_t
getWeiboUserInfoURL = https://graph.qq.com/user/get_info
getWeiboOtherUserInfoURL = https://graph.qq.com/user/get_other_info
getFansListURL = https://graph.qq.com/relation/get_fanslist
getIdolsListURL = https://graph.qq.com/relation/get_idollist
addIdolURL = https://graph.qq.com/relation/add_idol
delIdolURL = https://graph.qq.com/relation/del_idol
getTenpayAddrURL = https://graph.qq.com/cft_info/get_tenpay_addr
getRepostListURL = https://graph.qq.com/t/get_repost_list
version = 2.0.0.0

3 建包oauth2并扫描

<context:component-scan base-package="cn.itsource.oauth2" />

4 编写qqcontroller

@Controller
public class QQcontroller {
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private UserService userService;

    @RequestMapping("/qqLogin")
    public  void qqLogin(HttpServletRequest request, HttpServletResponse response){
//        response.setContentType("text/html;charset=utf-8");
        try {
            //重定向到qq的授权登录页面
            response.sendRedirect(new Oauth().getAuthorizeURL(request));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /***
     *  登录成功之后,它会自动跳转到域名http://javatv.cn/loginAfter
     *  需要配置hosts文件, 127.0.0.1 javatv.cn才能跳转到这里
     */
    @RequestMapping("/loginAfter")
    public  String afterLogin(HttpServletRequest request, HttpServletResponse response){
        try {
            AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);

            String accessToken   = null,
                    openID        = null;
            long tokenExpireIn = 0L;

            if (accessTokenObj.getAccessToken().equals("")) {
//                我们的网站被CSRF攻击了或者用户取消了授权
//                做一些数据统计工作
                System.out.print("没有获取到响应参数");
            } 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);
                System.out.println("<a href=" + "/shuoshuoDemo.html" + " target=\"_blank\">去看看发表说说的demo吧</a>");
                // 利用获取到的accessToken 去获取当前用户的openid --------- end

                /***
                 *  自己的代码:获取qq信息
                 */
                System.out.println("==================start====================");
                String url = "https://graph.qq.com/user/get_user_info?access_token="
                        + accessToken + "&oauth_consumer_key=101543517" + "&openid=" + openID + "&format=json ";
                String json = restTemplate.getForObject(url, String.class);
                //反序列化
                ObjectMapper objectMapper = new ObjectMapper();
                HashMap map = objectMapper.readValue(json, HashMap.class);
                System.err.println(map);
                System.err.println(map.get("figureurl_qq_1"));
                /***
                 *      如果用户存在openId,说明用户之前登录过了,直接跳转到main.jsp
                 *      如果用户不存在,那么就说明用户第一次登录,需要保存到数据库,然后在跳转到main.jsp
                 */
                User user = new User();
                user.setOpenid(openID);
                User u = userService.queryByParam(user);
                if (u!=null){
                    return "main";
                }else {
                    user.setLoginName(UUID.randomUUID().toString());
                    user.setLoginPwd("123456");
                    user.setDelFlag(1);
                    userService.insert(user);
                }
                System.out.println("==================end====================");



                System.out.println("<p> start ----------------------------------- 验证当前用户是否为认证空间的粉丝------------------------------------------------ start <p>");
                PageFans pageFansObj = new PageFans(accessToken, openID);
                PageFansBean pageFansBean = pageFansObj.checkPageFans("97700000");
                if (pageFansBean.getRet() == 0) {
                    System.out.println("<p>验证您" + (pageFansBean.isFans() ? "是" : "不是") + "QQ空间97700000官方认证空间的粉丝</p>");
                } else {
                    System.out.println("很抱歉,我们没能正确获取到您的信息,原因是: " + pageFansBean.getMsg());
                }
            }
    } catch (Exception e){
        e.printStackTrace();
        }
        return "main";
    }
}

5 登录页面加入QQ登录

			<%--第三方登录--%>
			<div style="text-align: center">
				<img id="qqLogin" src="/img/qq.png" width="75" height="25">
			</div>

			//qq登录点击事件
			$("#qqLogin").click(function () {
				location.href="/qqLogin"
	        })

6 修改hosts配置文件

C:\windows\system32\drivers\etc
输入javatv.cn的时候跳转到127.0.0.1
127.0.0.1 javatv.cn

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值