亚洲香蕉成人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
    97精品久久久中文字幕免费| 亚洲国产三级网| 77777亚洲午夜久久多人| 98午夜经典影视| 国产伦精品一区二区三区精品视频| 色偷偷偷亚洲综合网另类| 国产日本欧美一区| 欧美综合国产精品久久丁香| 国产专区精品视频| 蜜臀久久99精品久久久无需会员| 亚洲欧美中文日韩v在线观看| 国产91精品视频在线观看| 日韩高清电影好看的电视剧电影| 性欧美在线看片a免费观看| 精品久久久久久久久国产字幕| 成人福利在线视频| 久久久国产精彩视频美女艺术照福利| 91牛牛免费视频| 97久久精品视频| 一本久久综合亚洲鲁鲁| 成人激情免费在线| 欧美老女人在线视频| 91视频国产一区| 色狠狠av一区二区三区香蕉蜜桃| 日韩三级影视基地| 中文字幕欧美日韩| 欧美三级xxx| 国产精品女主播视频| 中文字幕不卡在线视频极品| 97精品免费视频| 两个人的视频www国产精品| 欧美另类极品videosbestfree| 欧美激情视频在线免费观看 欧美视频免费一| 国产亚洲欧美日韩美女| 中文字幕一精品亚洲无线一区| 久久久久久有精品国产| 欧美精品videossex性护士| 精品国产31久久久久久| 国产精品男人的天堂| 色婷婷**av毛片一区| 国产啪精品视频| 亚洲三级黄色在线观看| 成人在线中文字幕| 亚洲电影在线观看| 亚洲第一男人av| 欧洲亚洲免费在线| 欧美精品videos| 国产精品成av人在线视午夜片| 亚洲综合小说区| 91精品在线国产| 中文字幕一区电影| 日韩欧美在线字幕| 久久精品视频一| 国产精品久久久久久久久久久久久| 亚洲国产私拍精品国模在线观看| 久久综合电影一区| 国产亚洲欧美日韩美女| 日韩av不卡电影| 久久影视三级福利片| wwwwwwww亚洲| 欧美精品激情在线观看| 秋霞午夜一区二区| 热久久免费国产视频| 川上优av一区二区线观看| 国产日韩精品在线观看| 欧洲美女免费图片一区| 久久国产精品首页| 久99久在线视频| 57pao国产精品一区| 日韩欧美在线视频| 成人av在线天堂| 久久亚洲电影天堂| 欧美又大又粗又长| 亚洲第一色在线| 久久免费精品视频| 一本色道久久综合狠狠躁篇怎么玩| 欧美激情一区二区久久久| 亚洲影院色在线观看免费| 国色天香2019中文字幕在线观看| 国产精品xxxxx| 亚洲丝袜一区在线| 久久伊人91精品综合网站| 久久久久久香蕉网| 国产a∨精品一区二区三区不卡| 在线日韩日本国产亚洲| 性色av一区二区三区免费| 精品美女久久久久久免费| 国产成人免费91av在线| 日本19禁啪啪免费观看www| 91精品国产91久久久久久久久| 日韩欧美在线免费观看| 欧美肥臀大乳一区二区免费视频| 欧美一区第一页| 欧美激情国产高清| 国产欧洲精品视频| 日韩最新免费不卡| 亚洲欧洲激情在线| 国内精品模特av私拍在线观看| 欧美日本在线视频中文字字幕| 日韩电影网在线| 91精品中国老女人| 91色视频在线观看| 久久久久久综合网天天| 久久av红桃一区二区小说| 国产精品入口免费视频一| 国产精品人人做人人爽| 国产精品久久久久av| 亚洲白虎美女被爆操| 中文字幕在线看视频国产欧美| 亚洲视频在线观看视频| 国产在线视频欧美| 日韩人在线观看| 日本精品性网站在线观看| 欧美成人亚洲成人| 国产精品高清在线| 色在人av网站天堂精品| 4438全国亚洲精品在线观看视频| 国产综合在线观看视频| 久久久日本电影| 国产一区二区黄| 色综合91久久精品中文字幕| 欧美另类极品videosbestfree| 91久久综合亚洲鲁鲁五月天| 欧美亚洲午夜视频在线观看| 亚洲国产一区二区三区在线观看| 91免费国产网站| 日韩一二三在线视频播| 95av在线视频| 日韩精品在线电影| 成人国产亚洲精品a区天堂华泰| 国产精品福利片| 久久青草精品视频免费观看| 国产精品久久久久久搜索| 欧美一级片在线播放| 成人av色在线观看| 国产精品无av码在线观看| 亚洲天堂av网| 国产精品高精视频免费| 国产丝袜一区二区| 91深夜福利视频| 亚洲日韩中文字幕| 日本精品va在线观看| 97香蕉超级碰碰久久免费软件| 国产精品成人一区| 色婷婷av一区二区三区在线观看| 国产一区二区三区在线| 91牛牛免费视频| 欧美大片网站在线观看| 91精品中国老女人| 国产精品69精品一区二区三区| 欧美色道久久88综合亚洲精品| 日韩在线播放一区| 青青草原成人在线视频| 亚洲白拍色综合图区| 欧美黑人一级爽快片淫片高清| 国产美女精彩久久| 国产经典一区二区| 国产精品网站大全| 久久99精品久久久久久琪琪| 成人网在线免费观看| 欧美日韩激情美女| 亚洲影院高清在线| 日韩视频在线免费| 久久久久久久激情视频|