網站使用QQ登陸功能

通常網站要先作個用戶註冊的功能頁面,但個人網站名氣不大,不須要要求用戶註冊,因此直接使用騰訊QQ登陸的API接口。javascript

    如何使用JS_SDK讓網站擁有QQ登陸的功能,官網的這篇文章寫得還算完整:http://connect.qq.com/intro/login/jssdk-demo  可是,裏面有些地方並無填寫「實例」,只是說那個地方須要填寫什麼東西,但有時這樣說是不夠的,我就是試了挺多遍才知道填寫的格式。html

    因此我從新整理下過程。java

    一:準備工做jquery

          域名註冊,空間購買,網站接入申請這些我就不說了。使用API要求有個「回調地址」,因此本地調試就別想了。api

          我所用的域名是:http://bbs.yirenge.net/   填寫網站基本信息就是這樣的:瀏覽器

          QQ登錄功能申請

    二:製做一個回調網頁緩存

          當訪客點擊「QQ登陸」時,網頁就跳轉到「QQ某數據中心登陸頁面」,正確登陸以後,就會返回到「咱們製做的回調網頁」,而後再跳到「訪客剛剛點擊登陸的地方」。app

  1. <html>  
  2. <head>  
  3.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  4.     <title>伊人閣 </title>  
  5. </head>  
  6. <body>  
  7.     <h3>  
  8.         數據傳輸中,請稍後...</h3>  
  9. </body>  
  10. </html>  
  11. <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js"  
  12.     charset="utf-8" data-callback="true"></script>  

 

           命名爲:qc_back.htm  保存在根目錄下。dom

     三:首頁進行QQ登陸xss

           1:默認形式

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title>伊人閣 代購服務 購物分享 售後服務</title>  
  5.     <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js"  
  6.         data-appid="100575629" data-redirecturi="http://bbs.yirenge.net/qc_back.htm"  
  7.         charset="utf-8"></script>  
  8. </head>  
  9. <body>  
  10.     <span id="qq_login_btn" data-role="none"></span>  
  11.     <script type="text/javascript">  
  12.         QC.Login({//按默認樣式插入QQ登陸按鈕  
  13.             btnId: "qq_login_btn"   //插入按鈕的節點id  
  14.         });                 
  15.     </script>  
  16. </body>  
  17. </html>  


 

實現效果:

          2:自定義效果

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title>伊人閣 代購服務 購物分享 售後服務</title>  
  5.     <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js"  
  6.         data-appid="100575629" data-redirecturi="http://bbs.yirenge.net/qc_back.htm"  
  7.         charset="utf-8"></script>  
  8. </head>  
  9. <body>  
  10.     <span id="qqLoginBtn"></span>  
  11.     <script type="text/javascript">  
  12.         //調用QC.Login方法,指定btnId參數將按鈕綁定在容器節點中  
  13.         QC.Login({  
  14.             //btnId:插入按鈕的節點id,必選  
  15.             btnId: "qqLoginBtn",  
  16.             //用戶須要確認的scope受權項,可選,默認all  
  17.             scope: "all",  
  18.             //按鈕尺寸,可用值[A_XL| A_L| A_M| A_S|  B_M| B_S| C_S],可選,默認B_S  
  19.             size: "A_XL"  
  20.         }, function (reqData, opts) {//登陸成功  
  21.             //根據返回數據,更換按鈕顯示狀態方法  
  22.             var dom = document.getElementById(opts['btnId']),  
  23.        _logoutTemplate = [  
  24.             //頭像  
  25.             '<span><img src="{figureurl}" class="{size_key}"/></span>',  
  26.             //暱稱  
  27.             '<span>{nickname}</span>',  
  28.             //退出  
  29.             '<span><href="javascript:QC.Login.signOut();">退出</a></span>'  
  30.        ].join("");  
  31.             dom && (dom.innerHTML = QC.String.format(_logoutTemplate, {  
  32.                 nickname: QC.String.escHTML(reqData.nickname), //作xss過濾  
  33.                 figureurl: reqData.figureurl  
  34.             }));  
  35.         }, function (opts) {//註銷成功  
  36.             alert('QQ登陸 註銷成功');  
  37.         }  
  38. );  
  39.     </script>  
  40. </body>  
  41. </html>  

 

獲取用戶信息的文檔:http://wiki.connect.qq.com/get_user_info  修改一些參數能夠改變登錄後顯示的頭像大小等信息,但我這邊暫時顯示不出其它頭像,不知道是否是測試階段(還沒經過審覈)的限制。

PS:如今我只能用本身的QQ進行登陸。每次作了修改的話,須要清理瀏覽器緩存。

四:判斷是否登陸

我新建一個目錄Mine,裏面放一個Index.htm頁面,代碼以下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title>個人領地</title>  
  5.     <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js"  
  6.         data-appid="100575629" data-redirecturi="http://bbs.yirenge.net/qc_back.htm"  
  7.         charset="utf-8"></script>  
  8.     <script src="../Resource/JQueryMobile/jquery.js" type="text/javascript"></script>  
  9.     <script type="text/javascript">  
  10.         if (QC.Login.check()) {//若是已登陸  
  11.             //向「後臺」請求數據  
  12.             alert("歡迎登陸");  
  13.             QC.Login.getMe(function (openId, accessToken) {  
  14.             //向「後臺」請求當前「用戶openId」的數據  
  15.                 $("#message").html("當前登陸用戶的openId爲:" + openId + "\n accessToken爲:" + accessToken);  
  16.             });  
  17.         }  
  18. </script>  
  19. </head>  
  20. <body>  
  21. <div id="message"></div>  
  22. </body>  
  23. </html>  


  1. •openId是用戶身份的惟一標識,能夠保存在本地,以便用戶下次登陸時可對應到其以前的身份信息,不須要從新受權。  
  2. •accessToken是表示當前用戶在此網站/應用的登陸狀態與受權信息,也能夠保存在本地。  
相關文章
相關標籤/搜索