JAVA實現QQ第三方登錄


 

首先在QQ互聯: https://connect.qq.com/manage.html 申請賬號,並且進行資料審核,同時創建應用(設置回調地址)

 

 

 申請應用完后,會有app_ID、app_KEY等參數

 

官方JAVA SDK demo下載:https://pan.xunlew.com/s86815

官方文檔:https://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0

引入jar包 Sdk4J.jar

或者maven

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

  

把qqconnectconfig.properties 放在項目資源目錄下

配置三個參數

 

 

 

 

點擊QQ跳轉第三方請求后台代碼(官方demo代碼)

 /**
     * 第三方登錄 授權
     *
     * @return
     */
    @RequestMapping(value = "/to_qq")
    public void toLogin(HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("text/html;charset=utf-8");
        try {
            response.sendRedirect(new Oauth().getAuthorizeURL(request));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

  

 

回調地址代碼(官方demo代碼)

@RequestMapping(value = "/to_third_login/callback")
    public void loginBack(HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("text/html; charset=utf-8");


        try {
            PrintWriter out = response.getWriter();
            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();

                out.println("歡迎你,代號為 " + openID + " 的用戶!");
                request.getSession().setAttribute("demo_openid", openID);
                out.println("<a href=" + "/shuoshuoDemo.html" + " target=\"_blank\">去看看發表說說的demo吧</a>");
                // 利用獲取到的accessToken 去獲取當前用戶的openid --------- end


                out.println("<p> start -----------------------------------利用獲取到的accessToken,openid 去獲取用戶在Qzone的昵稱等信息 ---------------------------- start </p>");
                UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
                UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
                out.println("<br/>");
                if (userInfoBean.getRet() == 0) {
                    out.println(userInfoBean.getNickname() + "<br/>");
                    out.println(userInfoBean.getGender() + "<br/>");
                    out.println("<image src=" + userInfoBean.getAvatar().getAvatarURL30() + "/><br/>");
                    out.println("<image src=" + userInfoBean.getAvatar().getAvatarURL50() + "/><br/>");
                    out.println("<image src=" + userInfoBean.getAvatar().getAvatarURL100() + "/><br/>");
                } else {
                    out.println("很抱歉,我們沒能正確獲取到您的信息,原因是: " + userInfoBean.getMsg());
                }
                out.println("<p> end -----------------------------------利用獲取到的accessToken,openid 去獲取用戶在Qzone的昵稱等信息 ---------------------------- end </p>");


            }
        } catch (Exception e) {
        }
    }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM