1. 程式人生 > >qq登入,新浪微博登入 ,介面開發

qq登入,新浪微博登入 ,介面開發

給linux命令線上中文手冊加了,qq登入和新浪微博登入,認證用的是auth2.0,並且用了js api和php api相結合的方式來做的。個人覺得這種方式,兼顧安全和人性化。以前寫過一篇關於申請的部落格,請參考:

1,js api的優點,就是彈窗登入,不要跳來跳去,煩的很,資料都是後獲取的,可以通過瀏覽器的開發者工具,看到返回的資料,這樣儲存api返回的資料就不安全了,在瀏覽器上可以直接寫程式碼,模擬提交

2,php api的缺點,頁面跳轉,個人感覺跳來跳去,非常讓人不爽。但是在儲存資料時,要安全的多,並且隨時可以到第三方進行資料稽核。

如果二者結合起來,不用跳來跳去,資料也可以得到校驗。

一,qq登入

qq登入,JS API登入,並獲取個人資料,非同步提交給php程式,php程式,對提交來的資料,進行第三方校驗,也就是說,根據傳來的引數,在請求一次php的api,來獲取資訊,入本地資料庫。qq的open id是qq的唯一標識,主要程式碼如下。

1,js程式碼

檢視複製列印?
  1. <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="你的appid"  charset="utf-8"></script>  
檢視複製列印?
  1. function qq_login(){  
  2.    QC.Login({  
  3.        btnId:"qqlogin",  
  4.        scope:"all",  
  5.        size: "A_M"
  6.    }, function(reqData, opts){  
  7.         if(QC.Login.check()){  
  8.             QC.Login.getMe(function(openId, accessToken){  
  9.                 if(openId){  
  10.                     $.ajax({  
  11.                         type:"POST",  
  12.                         url:"./?mod=ajax&app=ajax_login&act=qq",  
  13.                         async:false,  
  14.                         data:{'openid':openId,'access':accessToken,'login':'only'},  
  15.                         success: function(msg){  
  16.                              if(msg == 'yes'){  
  17.                                 這裡是你的操作  
  18.                              }  
  19.                         }  
  20.                      });  
  21.                 }  
  22.             });  
  23.         }  
  24.    });  
  25. }  

2,php程式碼

檢視複製列印?
  1. require_once("路徑/qqConnectAPI.php");   //頂部包含這個檔案
  2. publicfunction qqAction(){  
  3.     if(emptyempty($_POST['openid']) || emptyempty($_POST['access'])){  
  4.         echo"no";  
  5.         exit;  
  6.     }  
  7.     $this->open_id = $_POST['openid'];  
  8.     $this->access = $_POST['access'];  
  9.     $qc = new QC($this->access,$this->open_id);     //對資料進行校驗
  10.     $arr = $qc->get_user_info();  
  11.     $result = $this->save_qq($arr);      //儲存資料
  12.     if(!emptyempty($result){  
  13.         echo"yes";  
  14.         exit;  
  15.     }else{  
  16.         echo"no";  
  17.         exit;  
  18.     }  

二,新浪微博登入

js api登入過程,獲取到登入資料,並且儲存到cookie中,非同步提交時,不用傳引數到,php程式。php api有方法讀取登入的access token,並獲取唯一標識,user id

在這裡再吐槽一下,新浪的介面,還是不錯的,可就是尼瑪,文件亂的一踏糊塗,找個東西,那叫痛苦。

1,js 程式碼

檢視複製列印?
  1. <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=應用的app id" type="text/javascript" charset="utf-8"></script>  

新浪微博的app key,app secret有多個,一個是網站的app key,app secret,網站下,每個建立應用都有一個app key,app secret。

檢視複製列印?
  1. function weibo_login (){  
  2.       WB2.anyWhere(function(W){  
  3.         W.widget.connectButton({  
  4.             id: "weibologin",  
  5.             type:'3,2',  
  6.             callback : {  
  7.                 login:function(o){    //登入後的回撥函式
  8.                     $.ajax({  
  9.                         type:"POST",  
  10.                         url:"./?mod=ajax&app=ajax_login&act=weibo",  
  11.                         async:false,  
  12.                         data:{'login':'only'},  
  13.                         success: function(msg){  
  14.                              if(msg == 'yes'){  
  15.                                 你的操作  
  16.                              }  
  17.                         }  
  18.                      });  
  19.                 }  
  20.             }  
  21.         });  
  22.     });  
  23. }  

2,php程式碼

檢視複製列印?
  1. include_once('路徑/config.php');  
  2. include_once('路徑/saetv2.ex.class.php');  
  3. publicfunction weiboAction(){  
  4.     $o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );  
  5.     $access = $o->getTokenFromJSSDK();       //從cookie中獲取資料
  6.     $c = new SaeTClientV2( WB_AKEY , WB_SKEY , $access['access_token'] );  
  7.     $user_message = $c->show_user_by_id( $access['uid']);  
  8.     $result = $this->save_sina($user_message);      //儲存資料
  9.     if(!emptyempty($result){  
  10.         echo"yes";  
  11.         exit;  
  12.     }else{  
  13.         echo"no";  
  14.         exit;  
  15.     }  
  16. }  

三,小結

qq登入和微博登入的介面都還是不錯的,qq登入在實用性,靈活性,安全性上,比微博就好一點。特別是文件方面,qq登入比微博登入好的太多。新浪微博團隊能不能改進一下呢。這就好比,有了家電,沒有說明書是一樣的。