亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

網站添加第三方登陸(PHP版)

2020-03-22 20:16:58
字體:
來源:轉載
供稿:網友
  •   這兩周正在寫畢業設計,我做的是一個問答網站。先介紹一下這個網站:這是一個關于大學生在線問答的網站,類似知乎和百度知道,不過功能沒有人家多,畢竟這個網站我一個人在做。網站部署在阿里云,網站包括API,Web,IOS,三大模塊,現在沒有找到人幫忙寫安卓,唉... 網站API已經寫完了,Web端正在完善開發中,畢業答辯之前會吧基本功能上線,小伙伴們可以訪問看看增加人氣,不過沒有寫完,并且看著不咋好看,因為沒人寫前端,我又不擅長寫頁面所以有點低端。域名是:http://www.olas.cn

      上面說的一點題外話,今天要說的是一個大家比較熟悉的東西:第三方登錄,因為我的這個畢業設計要用到,所以就順便加了一下,第三方登陸還是很有用的,這個是現在應用級網站的必備,現在的用戶一般都不會去主動去你的注冊,一般都是通過第三方的社交賬號去登陸,這樣省得以后去記密碼,而且也比較安全,所以添加第三方登錄還是比較好的。下面我結合這個網站的添加過程寫點東西。

      第三方登陸,顧名思義:用其他媒體的賬號登陸一些網站,現在比較流行的第三方賬號一般是:QQ,微博,微信。其他的平臺也有,比如:人人,百度貼吧等,感覺這幾個沒有前面那三個出名,也沒有前面那三個用的多,所以今天就說當前最為常用的微博和QQ的登陸方法。

    微博登陸

      先說使用新浪微博賬號登陸我的網站,微博登陸我理解是有兩種:一種是通過前臺JS調用不涉及后端的代碼就可以實現登陸的功能,另一種是通過SDK進行自己寫頁面和彈出確認框,自己處理邏輯,下面我會將這兩種方法都寫一下(其實也不算是兩種,只是大體上稱為前端和后端 - SDK不一樣嘛):

    第一種:

      1、先登陸微博的開放平臺:http://open.weibo.com,在我的應用中添加自己的網站或者是應用,網站的話域名必須是備案過的域名,不備案的域名禁止添加。我添加是 '答疑之家',等待審核,審通過添加成功之后,點擊應用進去之后會看到左邊的導航里面有個導航:部署微鏈接 ->微博登陸 ->微博登陸詳細介紹里面就是微博登陸涉及到的文檔的添加的步驟。

    2.放置登陸按鈕,邏輯大致如下:

    通過WBML方式

     1 <!--沒有回調函數的登錄按鈕-->                  2 <wb:login-button type='3,2' ></wb:login-button> 3   4 <!--有回調函數的登錄按鈕-->       5 <wb:login-button type='3,2' onlogin='login' onlogout='logout' ></wb:login-button> 6  7 // 如需添加回調函數,請在wbml標簽中添加onlogin='login' onlogout='logout',并定義login和logout函數。 8 function login(o) { 9     alert(o.screen_name)10 }11  12 function logout() {13     alert('logout');14 }

    通過Js的方式:

     1 <div id='wb_connect_btn' ></div> 2  3 WB2.anyWhere(function (W) { 4     W.widget.connectButton({ 5         id: 'wb_connect_btn', 6         type: '3,2', 7         callback: { 8             login: function (o) { //登錄后的回調函數 9                 alert('login: ' + o.screen_name)10             },11             logout: function () { //退出后的回調函數12                 alert('logout');13             }14         }15     });16 });

    添加必要的Js文件:

    在HTML標簽中增加XML命名空間

    1 <html xmlns:wb='http://open.weibo.com/wb'>

    在HEAD頭中引入WB.JS

    1 <script src='http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=4121744546' type='text/javascript' charset='utf-8'></script>

    在需要部署登錄按鈕的位置粘貼WBML代碼

    1 <wb:login-button type='3,2' onlogin='login' onlogout='logout'>登錄按鈕</wb:login-button>

    這樣就可以,點擊按鈕就可以通過回調的方式吧用戶授權后的信息拿到,比如頭像昵稱等。

    第二種:通過PHP-SDK的方式

    這種感覺符合我的需要,可以直接在PHP端處理登陸后的邏輯,前端可以寫自己想要的授權打開方式,所以我改用的這一種,首先你需要看一下文檔:http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6

    1:下載PHP-SDK開發包(http://open.weibo.com/wiki/SDK),借助于sdk能讓你減少好多不必考慮的東西,所以下載文檔還是很有必要的,不過牛逼的你可以襲擊寫調用方式,畢竟那個文檔寫的也不咋滴,因為他的代碼風格并不是按照PHP PSR(http://www.kancloud.cn/thinkphp/php-fig-psr/3140)規范去寫的,感覺很不專業,畢竟是讓別人看的東西,規范是很重要的,至少不會挨那么多罵,哈哈!題外話啊!下面看看他的代碼,你就該想吐槽了。。。。(換行方式,縮進,if 規范.. 不能忍)

    值得注意的是你要記住自己的app id 與key,然后在sdk中換成自己的id

    2:前端open登陸授權頁面,我是直接通過打開窗口的方式:

    1 function oauthLogin() {2      var A = window.open('http://***/public/tencentopen.html', 'TencentLogin', 'width=755, height=550,left=300px,top=60px,menubar=0,scrollbars=1,resizable=1,status=1,titlebar=0,toolbar=0,location=1');3 }

    請求地址的處理邏輯:

     1     /** 2      * 微博打開登陸認證頁面 3      * code:5000004 4      * time:2016.4.28 5      */ 6     public function weiboopen() 7     { 8         include_once('weiboOauth/config.php' ); 9         include_once('weiboOauth/saetv2.ex.class.php');10 11         $weiboObj = new SaeTOAuthV2(WB_AKEY, WB_SKEY );12         $code_url = $weiboObj->getAuthorizeURL(WB_CALLBACK_URL);13 14         header('Location:' . $code_url);15     }

    3:用戶點擊微博登陸后的認證返回邏輯:

        /**     * 執行微博認證     * code:5000005     * time:2016.4.28     */    public function weibooauth()    {        include_once('weiboOauth/config.php' );        include_once('weiboOauth/saetv2.ex.class.php' );        $weiboObj = new SaeTOAuthV2(WB_AKEY, WB_SKEY);        if (isset($_REQUEST['code'])) {            $keys = array();            $keys['code'] = $_REQUEST['code'];            $keys['redirect_uri'] = WB_CALLBACK_URL;            try {                $token = $weiboObj->getAccessToken('code', $keys) ;            } catch (OAuthException $e) {}        }        $succ['code'] = '100';        $succ['message'] = '授權成功';        $erro['code'] = '101';        $erro['message'] = '授權失敗';        if(empty($token)) {            $msg = $erro;        } else {            $saeObj = new SaeTClientV2(WB_AKEY, WB_SKEY, $token['access_token']);            $user_info = $saeObj->show_user_by_id($token['uid']);            $ret = $this->oauthLogin($user_info, 'weibo');            //授權失敗            if(empty($ret)) {                $msg = $erro;            } else {                session('olas_access_token', $token['access_token']);                $msg = $succ;            }        }        $this->assign('msg', $msg);        $this->display('oauth');    }

    4:授權成功以后:

      成功以后,你會把用戶的信息寫入到數據庫,微博登陸會返回用戶的昵稱,頭像信息(各個版本大小的頭像),用戶的性別等等,還有非常用戶的用戶uid,這個非常重要的,下次登陸會檢查這個UID是不是通過微博登陸過。這個和騰訊的不一樣,騰訊的不反回UID而是一個openid,不過性質是一樣的,待會我會介紹。

    之后返回打開窗口的狀態碼,刷新父頁面進行跳轉。

     1 $(document).ready(function(){ 2       if($.trim($('#code').val()) == '100') { 3              $('#bodys').html('<div>授權成功,正在跳轉 . . .</div>'); 4              setTimeout('changewindows();', 800); 5       } else { 6               $('#bodys').html('<div style='color:red;'>授權失敗,請重試!</div>'); 7       } 8 }); 9 function changewindows(){10       window.opener.location.href = 'http://**';11       window.close();12 }

      可以了通過SDK中SaeTClientV2中的show_user_by_id就可以得到用戶的信息了。你還可以看到那個Sae***因為這個PHP版本是SAE部門維護的,所以只SAE開頭的。步驟挺簡單的,大家可以認證閱讀他的開發文檔,反復調試應該不成問題。我看SDK是對微博開發文檔的封裝:OAuth4/authorize, OAuth4/access_token, OAuth4/get_token_info,OAuth4/revokeoauth4,OAuth4/get_oauth4_token

    如果你在接入中有什么問題你可以直接聯系我

    QQ登陸

      使用QQ登陸也是很常見的,畢竟使用QQ的人多??!使用QQ就必須按照人家的規范來,不然人家不給授權?。∠旅媸遣襟E:

    1:和微博一樣,首先要申請使用QQ互聯,網址:http://connect.qq.com/manage/index 。首先創建應用,審核通過,不通過也可以使用,不過有限制,好像只能使用你自己的賬號登陸,如下圖:

    2:一旦通過審核以后你就可以添加和修改自己網站的一些登陸信息,點擊 應用基本信息,這里要特別注意回調地址,因為一旦寫錯不能進行授權認證,所以回調地址要特別的注意,我在接入的時候就是一直報錯。還有一個要注意的是添加協作者,這個可以用作測試,很有用的。下面是我自己的網站添加的信息,大家可以瞅瞅,不過關鍵信息我已經抹去了,隱私嘛。

    3:上面的進行完之后,你就可以下載sdk了(http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD),我下的是PHP-sdk,下載后把他放在根目錄就可以了。然后本地訪問配置(主要是配置自己的應用信息),它上面有一個例子,直接可以調用的那種

    然后直接js打開授權頁,頁面地址請求到后臺的方法:

     1     /** 2      * qq打開登陸認證頁面 3      * code:5000006 4      * time:2016.4.24 5      */ 6  public function tencentopen() 7  { 8      include_once('tencentOauth/qqConnectAPI.php'); 9      $qc = new QC();10      $qc->qq_login();11  }

    授權成功以后要再次初始化那個sdk類:感覺這是他的BUG,必須拿上一次登陸返回的acs和open_id去初始化QC重新得到用戶的信息。

    1  //申請開發$openid2  $obj = new QC();3  $acs = $obj->qq_callback();4  $openid = $obj->get_openid();5 6  //重新賦值,得到用戶信息7  $qc = new QC($acs, $openid);8  $user_info = $qc->get_user_info();

    完整的代碼如下:

     1     /** 2      * qq登陸認證邏輯 3      * code:5000007 4      * time:2016.4.24 5      */ 6     public function oauth() 7     { 8         include_once('tencentOauth/qqConnectAPI.php'); 9 10         //申請開發$openid11         $obj = new QC();12         $acs = $obj->qq_callback();13         $openid = $obj->get_openid();14 15         //重新賦值,得到用戶信息16         $qc = new QC($acs, $openid);17         $user_info = $qc->get_user_info();18 19         $succ['code'] = '100';20         $succ['message'] = '授權成功';21 22         $erro['code'] = '101';23         $erro['message'] = '授權失敗';24 25         $msg = [];26         if(empty($user_info)) {27             $msg = $erro;28         } else {29             $user_info['openid'] = $openid;30             $user_info['appid'] = C('QQ_APPID');31             $ret = $this->oauthLogin($user_info, 'tencent');32             33             //授權失敗34             if(empty($ret)) {35                 $msg = $erro;36             } else {37                 $msg = $succ;38             }39         }40 41         $this->assign('msg', $msg);42         $this->display('oauth');43     }

    這里要注意QQ和微博返回用戶的ID是不一樣的,微博返回的就是用戶在微博的真實id,但是QQ不是。他返回的是qq號對應的一個open_Id,感覺騰訊有點扯淡,這直接導致,你無法得到登陸者的QQ號,有點悲哀,只得到一個和QQ號一一對應的open_id,也算不錯了,哎!

    好了,到這里基本上把微博和QQ的登陸說完了,期間或遇到各種的問題,比如回調地址失敗,登陸之后刷新父頁面跳轉等等,設計到各種的用戶體驗。

    如果大家在添加的時候遇到解決不了的問題可以Q我,我會的我一定給你說,大家共同提高嘛,另外上面說的不對的您可以通過評論告訴我,共同進步嘛。

    轉載請注明出處,謝謝! 我會同步更新到我的個人網站:www.zhaoyafei.cn

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    亚洲一区二区三区xxx视频| 欧美伦理91i| 91精品综合久久久久久五月天| 国产不卡av在线| 日韩精品中文字幕有码专区| 午夜精品一区二区三区在线| 国产精品电影一区| 91精品国产亚洲| 久久久久久久久久国产精品| 亚洲韩国欧洲国产日产av| 日本精品免费观看| 2019中文字幕在线免费观看| 国产精品一区二区三区毛片淫片| 日韩精品小视频| 自拍偷拍亚洲在线| 日韩精品中文字| 热久久免费国产视频| 国模极品一区二区三区| 欧美另类交人妖| 欧美大成色www永久网站婷| 亚洲国产黄色片| 亚洲999一在线观看www| 精品中文字幕在线观看| 国产欧美中文字幕| 欧美电影在线免费观看网站| 亚洲精品欧美一区二区三区| 久久久91精品国产| 永久免费毛片在线播放不卡| 欧美亚洲国产日本| 亚洲精品国精品久久99热| 亚洲专区在线视频| 欧美巨猛xxxx猛交黑人97人| 国产精品自拍小视频| 一区二区三区美女xx视频| 午夜精品久久久久久久男人的天堂| 亚洲欧美国产日韩中文字幕| 欧美日韩福利电影| 日韩在线欧美在线| 国产午夜精品免费一区二区三区| 韩国精品久久久999| 精品在线小视频| 69影院欧美专区视频| 国产精品美女www爽爽爽视频| 国产91热爆ts人妖在线| 精品国产鲁一鲁一区二区张丽| 日韩精品亚洲精品| 国产91在线播放九色快色| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品永久免费视频| 久久久久久久久亚洲| 国产精品都在这里| 欧美与欧洲交xxxx免费观看| 日韩视频在线免费观看| 一区二区三区四区视频| 96pao国产成视频永久免费| 日韩精品视频中文在线观看| 日韩在线免费av| 久久99久久99精品免观看粉嫩| 国产精品成人观看视频国产奇米| 欧美激情视频免费观看| 欧美日韩国产中文精品字幕自在自线| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲第一中文字幕| 青青在线视频一区二区三区| 亚洲一区亚洲二区亚洲三区| 亚洲精品自拍视频| 欧美第一黄网免费网站| 久久久99久久精品女同性| 亚洲精品美女在线观看| 国产一区二区三区丝袜| 66m—66摸成人免费视频| 久久69精品久久久久久久电影好| 国产欧美精品在线播放| 欧美性xxxx| 精品久久久中文| 国产成人午夜视频网址| 日韩中文在线不卡| 欧美成人在线网站| 精品亚洲一区二区三区在线观看| 国产精品美乳一区二区免费| 欧美日韩精品在线视频| 久久99精品国产99久久6尤物| 日韩一级裸体免费视频| 成人有码视频在线播放| 亚洲成色777777女色窝| www.日本久久久久com.| 亚洲综合色激情五月| 美女黄色丝袜一区| 亚洲精品美女久久久久| 国产手机视频精品| 亚洲激情视频在线播放| 欧美一级bbbbb性bbbb喷潮片| 在线国产精品播放| 国产成人精品电影| 日韩在线视频观看正片免费网站| 国产精品海角社区在线观看| 91chinesevideo永久地址| 97精品在线视频| 久热在线中文字幕色999舞| 国产精品女人久久久久久| 亚洲自拍中文字幕| 午夜精品久久久久久99热| 日韩欧美精品网站| 国产一区二区三区四区福利| 欧美丝袜第一区| 色诱女教师一区二区三区| 国产精品精品一区二区三区午夜版| 97avcom| 色综合91久久精品中文字幕| 日韩成人在线播放| 欧美大全免费观看电视剧大泉洋| 日韩在线观看网站| 国产精品扒开腿做爽爽爽视频| 欧美性一区二区三区| 国产日韩中文字幕| 亚洲欧美日韩天堂一区二区| 亚洲国产精品中文| 色视频www在线播放国产成人| 国产成人福利视频| 久久亚洲综合国产精品99麻豆精品福利| 伊人亚洲福利一区二区三区| 美日韩精品视频免费看| 国产精品欧美在线| 国外视频精品毛片| 在线精品播放av| 国产一区二区精品丝袜| 成人性生交大片免费观看嘿嘿视频| 欧美精品www| 亚洲精品一区av在线播放| 最近2019中文字幕在线高清| 成人妇女免费播放久久久| 久久精品小视频| 国产视频精品自拍| 国产精品久久久久久av福利| 国产精品91视频| 正在播放亚洲1区| 欧美黄色性视频| 国产精品夜色7777狼人| 国内精品400部情侣激情| 久久成年人视频| 亚洲美女精品成人在线视频| 欧美视频免费在线观看| 久久999免费视频| 91久久久久久久| 国产成人涩涩涩视频在线观看| 亚洲天天在线日亚洲洲精| 91精品久久久久久| 国产精品中文久久久久久久| 国产精品精品视频一区二区三区| 综合136福利视频在线| 欧美亚洲日本黄色| 国产精品va在线| 91最新在线免费观看| 日韩精品在线观看一区| 米奇精品一区二区三区在线观看| 欧美黄色片免费观看| 高清欧美性猛交xxxx| 亚洲精品www| 色偷偷亚洲男人天堂| 欧美激情国产高清| 欧美国产亚洲视频| 久久伊人91精品综合网站| 日韩欧美国产成人| 亚洲成人av片在线观看|