1. 程式人生 > >QQ第三方登錄

QQ第三方登錄

前綴 ace 需要 pen 三個參數 讀取 auto 開始 mod

場景:註冊頁面顯示一個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 讀取,我們開發人員不需要管;

是不是很簡單;我是第一次弄,所以也花了幾個小時

QQ第三方登錄