zoukankan      html  css  js  c++  java
  • QQ第三方登录

    场景:注册页面显示一个QQ图标,用户点击qq图标,跳转登录,用户登录后,获取到qq用户的信息,然后把信息绑定到自己的业务用户中

    这里介绍下调用QQ第三方登录的具体步骤;

    第一步:进入qq官网 申请接入: https://connect.qq.com/index.html  (QQ互联)

      注意;多个回调地址用分号隔开(;)且以 斜杠(/)结尾,如: http://www.abc.cn/wei;http://www.abc.cn/qq/auto/

    第二步:审核通过后开始接入,我这里采用的是 网站应用-- OAuth2.0接入方式(登录授权),同时还有2个版本的SDK(js和java),我是做javaWeb开发的,所以采用的是javaSDk

    在官网: http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD  找到Java SDK v2.0 点击下载

    把下载下来的SDK解压 得到 Sdk4J.jar 导入到项目中,把得到的 qqconnectconfig.properties 配置文件放入到项目资源目录(根路径),

    并修改qqconnectconfig.properties文件中的前面三个参数,都可以从申请的QQ互联 后台得到

    第三步:见代码

    //点击QQ图标
    $('#qq').on('click', function () {
            window.location.href =ctx + "/qq";
        })
    @RequestMapping(value = "/qq", method = RequestMethod.GET)
        @ResponseBody
        public void qqGetCode(HttpServletRequest request, HttpServletResponse response) {
            try {
                response.setHeader("Access-Control-Allow-Origin","*");
                response.sendRedirect(new Oauth().getAuthorizeURL(request));//请求qq互联网页授权,回调域名地址请求
            } catch (IOException e) {
                e.printStackTrace();
            } catch (QQConnectException e) {
                e.printStackTrace();
            }
        }
    //注意 这个请求/qq/auto/就是申请QQ互联时候的回调地址(排除域名前缀)
    @RequestMapping(value = "/qq/auto/")
        @ResponseBody
        public ModelAndView thirdPartyQQ(HttpServletRequest request) {
    
            try {
                AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
    
                String accessToken   = null,
                        openID        = null;
                if (accessTokenObj.getAccessToken().equals("")) {
                    System.out.print("没有获取到响应参数");
                } else {
                    accessToken = accessTokenObj.getAccessToken();
                    // 利用获取到的accessToken 去获取当前用的openid -------- start
                    OpenID openIDObj =  new OpenID(accessToken);
                    openID = openIDObj.getUserOpenID();
                    com.qq.connect.api.qzone.UserInfo qzoneUserInfo = new com.qq.connect.api.qzone.UserInfo(accessToken, openID);
                    UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
                    //这个userInfoBean就是qq返回过来的用户信息,有openid,昵称,头像,
              //赋值到自己的业务逻辑里面……进行处理
              return new ModelAndView("redirect:/"); // 利用获取到的accessToken 去获取当前用户的openid --------- end } } catch (QQConnectException e) { e.printStackTrace(); } return new ModelAndView("redirect:/user/login"); }

    备注:这个qqconnectconfig.properties配置文件是官方jar 读取,我们开发人员不需要管;

    是不是很简单;我是第一次弄,所以也花了几个小时

  • 相关阅读:
    struts2 action 之间的跳转
    json格式字符串用jquery.parseJSON()出现的问题 Uncaught SyntaxError: Unexpected token ' Uncaught SyntaxError: Unexpected number (index)
    转:Java生成带有二维码图片的word文档
    PowerDesigner 15 进行 数据库反转到 数据库模型
    模型方案参数更改 对比栏入选模型方案 图表效果对比 已不在项目中使用
    久违的博客园
    [转]不要if else的编程
    希望
    eclipse修改源码导出jar包
    compareTo 比较器
  • 原文地址:https://www.cnblogs.com/dwb91/p/6905166.html
Copyright © 2011-2022 走看看