背景
之前做過微信在moodle中登錄的應(yīng)用,實現(xiàn)了掃碼登錄和微信公眾號的靜默登錄扼睬,本文介紹QQ和微博的基本應(yīng)用床嫌,微信需要企業(yè)認(rèn)證,然而QQ和微博只需要個人和域名認(rèn)證即可照筑,要求沒那么高吹截,用來做個人開發(fā)足夠了瘦陈。都能實現(xiàn)社交平臺的快速登錄,本文將重點介紹登錄的流程與一些關(guān)鍵代碼的實現(xiàn)波俄。
也可以先參考微信掃碼登錄的這篇文章:Moodle三方登錄—微信平臺的應(yīng)用
關(guān)鍵實現(xiàn):
一晨逝、數(shù)據(jù)庫
為了盡可能少的影響moodle系統(tǒng)本身的數(shù)據(jù)庫,我新建了一個數(shù)據(jù)表懦铺,參考資料中的第一個文章有介紹捉貌。
新建mdl_user_qq
字段為:id,userid,openid.
(可以設(shè)置id或者userid為主鍵,userid跟mdl_user用戶表建立連接)
二冬念、登錄流程
首先趁窃,要比較熟悉QQ互聯(lián)的基本登錄過程,可以參考資料第二篇文章急前,但是最新的moodle由于采用的是新的php7醒陆,部分php函數(shù)進(jìn)行了升級,而最新的QQ_sdk_php還是2013年的裆针,所以有個函數(shù)需要修改刨摩。
修改URL.class.php中的get_contents函數(shù)為:
'''
public function get_contents($url)
{ $ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch); //-------請求為空
if(empty($response))
{
? ? ? ? $this->error->showError("50001");
}
return $response;
}
'''
即可解決curl的一個錯誤提示。
基本登錄流程:
QQ掃碼——>獲取QQ的openid——>從mdl_user_qq表中查找該openid的userid世吨,找到后澡刹,調(diào)用moodle本身的登錄函數(shù),設(shè)置Cookie等基本操作另假。(可以參考開頭給的微信登錄的鏈接像屋,函數(shù)已經(jīng)有描述)
關(guān)鍵代碼提示:
config.php配置文件,必須包含边篮,在moodle根目錄下己莺。
login/lib.php:get_complete_user_data函數(shù)和complete_user_login( $user )函數(shù)都需要引用這個php文件。
其他的代碼就需要自己進(jìn)行補(bǔ)充說明了戈轿,整體難度不是很大吧凌受,但是需要自己對其中的登錄流程比較熟悉。
關(guān)鍵代碼的實現(xiàn):
1思杯、login/中添加QQ掃碼的按鈕:
moodle\theme\boost\templates\core\loginform.mustache胜蛉, 在大約176行左右添加
一行登錄按鈕的,可以跟上面的登錄一樣色乾,將鏈接文字修改即可誊册。
2、QQ掃碼界面:
login/qq/index.php:參考資料2中暖璧,默認(rèn)內(nèi)容可以是:
<?php
require_once("API/qqConnectAPI.php");
$qc = new QC();
$qc->qq_login();
?>
回調(diào)頁面設(shè)置qq.php:
require_once("API/qqConnectAPI.php");
? $qc = new QC(); $callbak = $qc->qq_callback(); //返回的驗證值
$openid = $qc->get_openid(); //qq分配的用戶id
$qq = new QC($callbak,$openid);
$result = $qq->get_user_info(); //獲取用戶信息
//獲取到用戶openid和基本信息之后案怯,就可以進(jìn)行結(jié)合moodle本身進(jìn)行登錄流程了。
參考資料
1澎办、Moodle系統(tǒng)中 QQ登錄模塊的開發(fā)與應(yīng)用
2嘲碱、通過QQ互聯(lián)實現(xiàn)網(wǎng)站第三方登錄
(注意:QQ_sdk_php代碼有點老了金砍,需要修改一處代碼)
3、微信開放平臺開發(fā)——網(wǎng)頁微信掃碼登錄(OAuth2.0)
后話
moodle的二次開發(fā)資料教少麦锯,我也走了很多彎路恕稠,從開始安裝系統(tǒng)到一些簡單的開發(fā),也有一些源碼的閱讀等扶欣,都耗費了很多時間和精力鹅巍,同時我也有一些折騰的經(jīng)驗。
如果不介意付費服務(wù)宵蛀,歡迎與我聯(lián)系昆著。