婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > thinkPHP5項(xiàng)目中實(shí)現(xiàn)QQ第三方登錄功能

thinkPHP5項(xiàng)目中實(shí)現(xiàn)QQ第三方登錄功能

熱門標(biāo)簽:福建高頻外呼防封系統(tǒng)哪家好 400電話申請(qǐng)辦理 周口網(wǎng)絡(luò)回?fù)芡夂粝到y(tǒng) 外呼系統(tǒng)人工客服 百度地圖標(biāo)注類型是酒店 網(wǎng)絡(luò)電話400申請(qǐng) 隨州銷售電銷機(jī)器人公司 全國(guó)各省地圖標(biāo)注點(diǎn) 商丘外呼系統(tǒng)好處

本文實(shí)例講述了thinkPHP5項(xiàng)目中實(shí)現(xiàn)QQ第三方登錄功能。分享給大家供大家參考,具體如下:

最近用thinkPHP 5框架做了一個(gè)婚紗店的項(xiàng)目,在開發(fā)過程中需要用到第三方登錄,騰訊官方給的案例是幾個(gè)文件相互包含實(shí)現(xiàn)的,放到tp5里面很悲催的發(fā)現(xiàn)在控制器中不能通過include或者require完成預(yù)期功能,想要用騰訊官方封的類就必須對(duì)其進(jìn)行修改,修改如下:

1. 找到官方SDK里面的核心文件

框架外使用的時(shí)候是include 'qqConnectAPI.php',打開這個(gè)文件可以看到它是包含了另外幾個(gè)文件的,comm文件夾下的幾個(gè)文件無(wú)非就是定義一些常量,記錄一下你的APP KEY這些信息,都無(wú)關(guān)緊要,只要把class文件夾下的幾個(gè)類文件放到tp5里面就好了,而且仔細(xì)看一下代碼會(huì)發(fā)現(xiàn)其實(shí)只要拿到三個(gè)類就完全可以實(shí)現(xiàn)功能了。

2. 放到tp框架里

tp5推薦將第三方的東西,同時(shí)又不是composer安裝的統(tǒng)一放到extend目錄下,因?yàn)榭赡芤院筮€要做其他擴(kuò)展,這里將qq登錄相關(guān)的單獨(dú)建一個(gè)qqlogin文件夾,

可以看到里面只有三個(gè)類,我去掉了一個(gè)Recorder和一個(gè)ErrorCase類,見名知意,這兩個(gè)的作用是記錄一些信息,如access_token,還有異常處理,這里我就直接刪掉了。另外注意,按照psr4規(guī)范,類名要跟文件名一致,所以要把文件名改一下,同時(shí)加上命名空間extend\qqlogintp5所有的類都要有命名空間

另外為了防止tp5找不到我們需要的文件,最好在config.php文件里注冊(cè)一條根命名空間,在第30行:

// 注冊(cè)的根命名空間
'root_namespace'  => [
 'extend\qqlogin' => '../extend/qqlogin/',
 'extend\baidu' => '../extend/bdlogin/'
],

3. 改造源代碼

因?yàn)镼C.php是繼承了Oauth.php,我們從后者改起,去掉require_once,加上命名空間這個(gè)就不說了,首先看成員屬性,類常量是騰訊平臺(tái)的地址,不用管,原來有三個(gè)屬性,recorder、error不需要,注釋掉或直接刪掉。下文同樣,要想象跟這兩個(gè)單詞有仇,看到就注釋或刪掉。

// protected $recorder;
public $urlUtils;
// protected $error;
public $state;
public $appid = "****";
public $callback = "http://****/index/user/qqcallback";
public $scope = "get_user_info";

下面四個(gè)屬性是需要添加的,state用于防止CSRF攻擊,下面三個(gè)看官方文檔就知道是什么東西了,這些原來是在comm文件夾下的inc.php存放的,現(xiàn)在直接拿過來變成成員屬性。

然后構(gòu)造函數(shù),實(shí)例化三個(gè)類,有兩個(gè)已經(jīng)不存在了,而且上面說了,跟這兩個(gè)單詞有仇,看到就要注釋或刪掉。

再看下面的第一個(gè)成員方法qq_login()

public function qq_login(){
 $appid = $this->recorder->readInc("appid");
 $callback = $this->recorder->readInc("callback");
 $scope = $this->recorder->readInc("scope");
 //---生成唯一隨機(jī)串防CSRF攻擊
 $state = md5(uniqid(rand(), TRUE));
 $this->recorder->write('state',$state);
 *
 *
 return $login_url;
 // header("Location:$login_url");
}

我們已經(jīng)有仇把有那兩個(gè)單詞的這幾行刪掉了,我們又需要這些東西,不要忘了我們上面增加了三個(gè)成員屬性,這些值我們已經(jīng)有了下面用的時(shí)候通過$this->appid就好了。state驗(yàn)證的時(shí)候我們可以通過session去驗(yàn)證,在tp5里面提供了助手函數(shù)去寫session:

session('state',$this->state);

最后一句是header跳轉(zhuǎn),暫不知道什么原因在tp5里面并不能看到跳轉(zhuǎn)效果,于是直接將url返回,再在控制器里面通過tp5的重定向函數(shù)$this->redirect()實(shí)現(xiàn)跳轉(zhuǎn)。

下面看qq_callback()

public function qq_callback(){
 // $state = $this->recorder->read("state");
 //---驗(yàn)證state防止CSRF攻擊
 if(input('state') != session('state')){
  // $this->error("30001");
  exit('30001');
 }
 *
 *
 // return $params["access_token"];
 session('access_token',$params["access_token"]);
}

出現(xiàn)那兩個(gè)單詞的已經(jīng)注釋了,我們?cè)趒q_login里面有寫session,這里直接取sessio比較就行了,input()也是tp5的助手函數(shù),可以獲得get、post請(qǐng)求的參數(shù),結(jié)果是一個(gè)數(shù)組,但是不能夠再動(dòng)態(tài)為其添加鍵值對(duì),想要添加的話必須將其賦給一個(gè)變量,再對(duì)變量進(jìn)行操作。這里有錯(cuò)誤的話直接exit打印出錯(cuò)誤號(hào),官方文檔有詳細(xì)的錯(cuò)誤號(hào)說明。在最后也是直接將獲取到的access_token寫進(jìn)session。

下面的get_openid()方法類似,參數(shù)列表用session構(gòu)建,返回值直接寫進(jìn)session。

然后再修改QC.php,只需修改構(gòu)造方法,把數(shù)組的三個(gè)變量給一下值就好了。

$this->keysArr = array(
 "oauth_consumer_key" => (int)$this->appid,
 "access_token" => session('access_token'),
 "openid" => session('openid')
);

4. 控制器調(diào)用

改造完成,可以在控制器里面使用了,附上代碼入下:

use extend\qqlogin\QC;
// 處理qq登錄
public function qqlogin()
{
 $qq = new QC();
 $url = $qq->qq_login();
 $this->redirect($url);
}
// qq登錄回調(diào)函數(shù)
public function qqcallback(UserModel $user)
{
 $qq = new QC();
 $qq->qq_callback();
 $qq->get_openid();
 $qq = new QC();
 $datas = $qq->get_user_info();
 * // 拿到用戶信息后的處理
 *
}

切記:

在回調(diào)函數(shù)里面要實(shí)例化兩次QC才能拿到用戶信息,第二次實(shí)例化的時(shí)候才有openidaccess_token兩個(gè)參數(shù)。

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • thinkphp3.x中cookie方法的用法分析
  • thinkphp中session和cookie無(wú)效的解決方法
  • ThinkPHP的cookie和session沖突造成Cookie不能使用的解決方法
  • thinkphp5框架結(jié)合mysql實(shí)現(xiàn)微信登錄和自定義分享鏈接與圖文功能示例
  • thinkPHP中U方法加密傳遞參數(shù)功能示例
  • ThinkPHP實(shí)現(xiàn)的rsa非對(duì)稱加密類示例
  • thinkphp微信開發(fā)(消息加密解密)
  • thinkphp微信開之安全模式消息加密解密不成功的解決辦法
  • PHP隱形一句話后門,和ThinkPHP框架加密碼程序(base64_decode)
  • tp5框架使用cookie加密算法實(shí)現(xiàn)登錄功能示例

標(biāo)簽:海南 十堰 六安 迪慶 南寧 定西 佛山 樂山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《thinkPHP5項(xiàng)目中實(shí)現(xiàn)QQ第三方登錄功能》,本文關(guān)鍵詞  thinkPHP5,項(xiàng),目中,實(shí)現(xiàn),第三方,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《thinkPHP5項(xiàng)目中實(shí)現(xiàn)QQ第三方登錄功能》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于thinkPHP5項(xiàng)目中實(shí)現(xiàn)QQ第三方登錄功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品久久一区二区三区| 在线精品视频一区二区三四 | 99热精品一区二区| 日韩高清在线观看| 亚洲五月六月丁香激情| 中文无字幕一区二区三区| 欧美高清一级片在线| 欧美少妇bbb| 欧美三级日本三级少妇99| 91麻豆成人久久精品二区三区| 国产精品一区久久久久| 国产麻豆精品一区二区| 激情另类小说区图片区视频区| 午夜久久久久久久久久一区二区| 一个色妞综合视频在线观看| 亚洲精品欧美在线| 亚洲综合色婷婷| 亚洲国产精品久久不卡毛片| 亚洲第一在线综合网站| 亚洲成a人片在线观看中文| 亚洲成av人片www| 日本aⅴ免费视频一区二区三区| 亚洲成在人线在线播放| 天天影视涩香欲综合网| 欧美a级一区二区| 久久国产尿小便嘘嘘| 精品午夜久久福利影院| 国产高清久久久久| 99久久精品国产一区二区三区| 99精品在线观看视频| 欧美性大战xxxxx久久久| 欧美卡1卡2卡| 精品国产sm最大网站免费看| 久久久国产一区二区三区四区小说| 国产日本欧美一区二区| 亚洲免费在线观看| 人妖欧美一区二区| 国产精品123区| 97久久精品人人做人人爽| 欧美在线观看你懂的| 欧美一级一级性生活免费录像| 精品久久一二三区| 亚洲欧洲国产日韩| 日韩中文字幕av电影| 激情综合网最新| av激情成人网| 337p亚洲精品色噜噜| 国产欧美精品一区| 亚洲成av人片在线观看无码| 国产精品88av| 欧美午夜一区二区三区| 国产视频不卡一区| 香蕉影视欧美成人| 成人午夜私人影院| 欧美日韩国产一级片| 久久午夜电影网| 亚洲成人午夜影院| 国产成人免费视频精品含羞草妖精| 91麻豆福利精品推荐| 精品1区2区在线观看| 亚洲国产精品一区二区久久| 国产精品一区在线观看乱码| 这里是久久伊人| 亚洲色图视频网站| 国产一区二区成人久久免费影院| 欧美羞羞免费网站| 日韩一区中文字幕| 国产美女主播视频一区| 欧美一区二区三区性视频| 亚洲精品久久久蜜桃| 国产九色sp调教91| 日韩一区二区三区精品视频| 一区二区高清免费观看影视大全 | 午夜精品成人在线| 成人精品在线视频观看| 精品久久国产97色综合| 丝袜美腿亚洲色图| 色8久久人人97超碰香蕉987| 国产日韩视频一区二区三区| 久久精品国产秦先生| 6080午夜不卡| 丝袜美腿成人在线| 欧美人妇做爰xxxⅹ性高电影| 亚洲欧洲另类国产综合| 成人高清av在线| 日本一区二区不卡视频| 国产美女久久久久| 久久久精品国产免费观看同学| 成人综合激情网| 久久久91精品国产一区二区精品 | 天堂一区二区在线| 在线欧美小视频| 亚洲乱码国产乱码精品精的特点 | 日本不卡一区二区三区高清视频| 欧洲精品一区二区| 一区二区三区免费网站| 91精彩视频在线| 午夜久久久影院| 91麻豆精品国产91久久久使用方法 | 日韩福利视频导航| 欧美高清www午色夜在线视频| 午夜欧美一区二区三区在线播放| 91视频观看免费| 亚洲男同性视频| 欧美视频一区在线观看| 午夜一区二区三区视频| 欧美日韩视频在线一区二区| 日本一道高清亚洲日美韩| 91国产精品成人| 自拍视频在线观看一区二区| 91久久精品国产91性色tv | 中文字幕中文字幕一区二区| 国产毛片精品一区| 欧美国产丝袜视频| 国产一区二区三区在线观看精品| 久久久久久免费| 久久电影国产免费久久电影 | 欧美色视频在线观看| 亚洲图片自拍偷拍| 欧美偷拍一区二区| 另类小说综合欧美亚洲| 久久色在线视频| 国产不卡在线视频| 亚洲欧美日韩国产一区二区三区 | 成人国产精品免费观看视频| 亚洲综合在线电影| 精品国产三级电影在线观看| av不卡免费在线观看| 亚洲国产人成综合网站| 欧美大黄免费观看| 91麻豆蜜桃一区二区三区| 青青草97国产精品免费观看无弹窗版| 久久精品视频免费| 欧美精选在线播放| av不卡在线播放| 精品一区二区三区免费视频| 亚洲综合av网| 精品成人a区在线观看| 91成人在线免费观看| 日韩经典中文字幕一区| 欧美激情在线免费观看| 成人av电影观看| 日本v片在线高清不卡在线观看| 久久久国产精华| 欧美一区二区网站| 在线亚洲人成电影网站色www| 黑人巨大精品欧美一区| 亚洲一区影音先锋| 最新国产精品久久精品| 亚洲精品一区二区三区香蕉| 欧美日韩精品二区第二页| 粉嫩高潮美女一区二区三区| 免费成人在线视频观看| 亚洲综合色自拍一区| 欧美国产成人精品| 一区二区国产盗摄色噜噜| 国产色综合久久| 日韩一区二区三区观看| 欧美老年两性高潮| 欧洲日韩一区二区三区| 99精品视频中文字幕| 国产精品88av| 国产麻豆精品视频| 精品影院一区二区久久久| 日日欢夜夜爽一区| 亚洲自拍欧美精品| 亚洲精品欧美二区三区中文字幕| 国产精品视频在线看| 久久精品夜色噜噜亚洲a∨| 欧美xxxx老人做受| 欧美成人精品二区三区99精品| 欧美精品久久一区| 在线观看91av| 欧美日韩成人综合天天影院| 欧美午夜片在线看| 正在播放一区二区| 欧美一区二区视频在线观看2020 | 精品视频免费看| 色婷婷激情综合| 日本久久一区二区三区| 在线免费观看日本欧美| 91久久精品一区二区三| 欧美影视一区在线| 欧美日本高清视频在线观看| 日韩欧美亚洲一区二区| 精品国产1区2区3区| 久久精品欧美日韩精品| 久久久国际精品| 中文字幕一区三区| 一区二区三区加勒比av| 亚洲成av人**亚洲成av**| 日韩二区三区四区| 国产一区在线精品| 99久久精品99国产精品| 欧美日韩亚洲国产综合| 日韩女优电影在线观看| 日本一区免费视频| 一区二区三区欧美日| 美女www一区二区| 国产成人av一区二区|