QQ第三方登錄
阿新 • • 發佈:2017-05-25
前綴 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第三方登錄