李如亮,馬紅亮,楊 洋陜西師范大學(xué)教育學(xué)院,西安 7006;四川師范大學(xué)教務(wù)處教學(xué)研究與評(píng)估科,成都 60068
Moodle是一款開(kāi)源的課程管理系統(tǒng)(CMS),它也被稱為學(xué)習(xí)管理系統(tǒng)(LMS)或虛擬學(xué)習(xí)環(huán)境(VLE)。Moodle在全球教育工作者中非常流行,被廣大教師用來(lái)為學(xué)生創(chuàng)建具有動(dòng)態(tài)內(nèi)容的網(wǎng)站。Moodle的設(shè)計(jì)與開(kāi)發(fā)遵循社會(huì)建構(gòu)主義教學(xué)法(social constructionist pedagogy),其基本結(jié)構(gòu)是圍繞課程而組織的[1]。截止2013年7月14日,Moodle的全球注冊(cè)網(wǎng)站已達(dá)84 537個(gè),且遍及237個(gè)國(guó)家,而這些注冊(cè)網(wǎng)站的總課程數(shù)已超過(guò)700萬(wàn),用戶已達(dá)7 000萬(wàn)之多[2]。中國(guó)大陸的Moodle注冊(cè)網(wǎng)站也有1 074個(gè),其中既有高校、中學(xué)、小學(xué)等學(xué)校組織創(chuàng)建的課程網(wǎng)站,也有許多企業(yè)以及個(gè)人所創(chuàng)建的網(wǎng)站[1]。筆者于2011年用Moodle搭建了英國(guó)博爾頓大學(xué)教育控制論研究所針對(duì)國(guó)內(nèi)研究生設(shè)計(jì)開(kāi)發(fā)的一門(mén)開(kāi)放課程,并探索網(wǎng)絡(luò)學(xué)習(xí)的新模式[3]。此后,筆者將該Moodle網(wǎng)站擴(kuò)建為教育技術(shù)開(kāi)放教育資源網(wǎng)站,定位于全國(guó)范圍內(nèi)共建共享教育技術(shù)學(xué)的開(kāi)放課程資源。目前該開(kāi)放教育資源網(wǎng)站注冊(cè)用戶已超過(guò)1 200,已共建共享了近50門(mén)國(guó)內(nèi)外教育技術(shù)學(xué)領(lǐng)域的開(kāi)放課程。然而,在使用過(guò)程中,許多用戶認(rèn)為Moodle的注冊(cè)過(guò)程比較繁瑣,希望能夠簡(jiǎn)化Moodle的注冊(cè)以及登錄模塊,使進(jìn)入網(wǎng)站學(xué)習(xí)的過(guò)程能夠更加快捷和方便。經(jīng)過(guò)分析我們發(fā)現(xiàn),Moodle系統(tǒng)的注冊(cè)登錄模塊出于網(wǎng)站安全等因素的考慮(如防止機(jī)器注冊(cè))需要用戶輸入近10項(xiàng)信息,包括用戶名、密碼、郵箱地址、姓、名、市/縣、國(guó)家和地區(qū)以及reCAPTCHA驗(yàn)證碼,而且還要驗(yàn)證郵箱之后才能登錄,這一過(guò)程的確顯得比較繁瑣。為此,我們需要找到一種比較方便快捷且安全的注冊(cè)登錄Moodle的方式。
騰訊QQ是一款家喻戶曉、婦孺皆知的即時(shí)通信軟件?!敖刂?012年12月31日,QQ即時(shí)通信的活躍帳戶數(shù)達(dá)到7.982億,最高同時(shí)在線帳戶數(shù)達(dá)到1.764億”[4]??梢?jiàn),QQ在國(guó)內(nèi)應(yīng)用十分廣泛。而 QQ互聯(lián)開(kāi)放平臺(tái)則為第三方網(wǎng)站提供了豐富的API。第三方網(wǎng)站接入QQ互聯(lián)開(kāi)放平臺(tái)后,即可通過(guò)調(diào)用該開(kāi)放平臺(tái)提供的API實(shí)現(xiàn)用戶使用QQ賬號(hào)登錄第三方網(wǎng)站的功能。第三方網(wǎng)站也可以調(diào)用騰訊公司提供的API實(shí)現(xiàn)網(wǎng)站的分享、評(píng)論、邀請(qǐng)等功能,即網(wǎng)站的社交化功能。且可以將相關(guān)信息同步到QQ空間、騰訊朋友、騰訊微博等平臺(tái),建立網(wǎng)站與騰訊各平臺(tái)的互動(dòng)關(guān)系,利用龐大的QQ用戶群來(lái)實(shí)現(xiàn)網(wǎng)站的快速傳播[5]。在網(wǎng)站接入方式方面,第三方網(wǎng)站主要通過(guò)使用“QQ登錄”接入QQ互聯(lián)開(kāi)放平臺(tái)。目前,許多大型商業(yè)網(wǎng)站都將自身網(wǎng)站與QQ登錄進(jìn)行了整合,如豆丁網(wǎng)、PPTV網(wǎng)絡(luò)電視、酷我音樂(lè)、趕集網(wǎng)、58同城、當(dāng)當(dāng)網(wǎng),等,給用戶帶來(lái)了方便、快捷的體驗(yàn)。
作為應(yīng)用廣泛的網(wǎng)絡(luò)教育平臺(tái),Moodle也有必要借鑒商業(yè)網(wǎng)站的行為來(lái)改進(jìn)和完善自己的登錄系統(tǒng),從而更好地服務(wù)于網(wǎng)絡(luò)教與學(xué)。將Moodle平臺(tái)與QQ登錄進(jìn)行整合具有如下幾點(diǎn)益處:①可以極大地簡(jiǎn)化用戶注冊(cè)和登錄的步驟。用戶只需要使用已有的QQ號(hào)碼即可登錄Moodle網(wǎng)站,從而大幅減少注冊(cè)和登錄Moodle網(wǎng)站的操作步驟,且能夠給網(wǎng)站帶來(lái)一定數(shù)量的新用戶;②方便實(shí)現(xiàn)社會(huì)網(wǎng)絡(luò)化學(xué)習(xí)。通過(guò)QQ登錄Moodle的用戶可以將在Moodle網(wǎng)站上發(fā)布、分享的信息即時(shí)同步到QQ空間、騰訊微博,等,從而進(jìn)一步在個(gè)人的社會(huì)空間中與他人展開(kāi)交流,這有助于實(shí)現(xiàn)Siemens和Stephen Downes提出的關(guān)聯(lián)主義學(xué)習(xí)理論[6]所強(qiáng)調(diào)的社會(huì)網(wǎng)絡(luò)化學(xué)習(xí)。
在Moodle系統(tǒng)中開(kāi)發(fā)QQ登錄模塊,需要在修改Moodle相關(guān)程序的基礎(chǔ)上調(diào)用騰訊開(kāi)放平臺(tái)所提供的服務(wù)。從網(wǎng)站通過(guò)QQ登錄接入QQ互聯(lián)開(kāi)放平臺(tái)的流程來(lái)看,該模塊的開(kāi)發(fā)需要依次完成以下幾個(gè)步驟:①開(kāi)發(fā)者在QQ互聯(lián)開(kāi)放平臺(tái)注冊(cè)Moodle網(wǎng)站;②申請(qǐng)Moodle網(wǎng)站對(duì)應(yīng)的appid與appkey;③對(duì)Moodle網(wǎng)站進(jìn)行相應(yīng)的二次開(kāi)發(fā);④申請(qǐng)上線并使用QQ互聯(lián)提供的OpenAPI。在對(duì)Moodle網(wǎng)站進(jìn)行相應(yīng)的二次開(kāi)發(fā)時(shí),有兩種方式可供選擇:其一,使用QQ互聯(lián)提供的SDK包;其二,根據(jù)QQ登錄OAuth 2.0協(xié)議自主開(kāi)發(fā)。前者只需要修改少量代碼,便可快速接入QQ登錄的應(yīng)用;后者自定義程度較高,但開(kāi)發(fā)過(guò)程相對(duì)復(fù)雜一些。該研究采用第一種接入方式,這種方式從技術(shù)構(gòu)成上看屬于數(shù)據(jù)庫(kù)應(yīng)用類的Web應(yīng)用模塊,需要應(yīng)用PHP對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行添加、刪除、查找、修改等操作。
根據(jù)Moodle系統(tǒng)與QQ登錄整合的實(shí)現(xiàn)目標(biāo),該模塊需要具有用戶登錄注冊(cè)、綁定已有用戶、完善帳號(hào)信息的功能。首先,用戶使用QQ登錄模塊登錄Moodle時(shí),單擊QQ登錄圖標(biāo)獲取Openid進(jìn)行驗(yàn)證,驗(yàn)證時(shí)要與Moodle數(shù)據(jù)庫(kù)創(chuàng)建的qq_openid表中的Openid字段信息進(jìn)行比較。如果qq_openid表中有獲取的Openid信息,并有對(duì)應(yīng)的userid用戶表記錄,則驗(yàn)證成功。只有驗(yàn)證成功后方可以登錄到Moodle平臺(tái),并以用戶身份訪問(wèn)網(wǎng)站或者更改自己資料。用戶登錄后,借助于SESSION信息存儲(chǔ)會(huì)員登錄狀態(tài),以便在不同的頁(yè)面訪問(wèn)時(shí)無(wú)需再次登錄驗(yàn)證。否則,需要在用戶表和qq_openid表中插入記錄,完成注冊(cè),并登錄到Moodle平臺(tái)中。接著,使用QQ登錄的用戶可以通過(guò)“完善帳號(hào)信息”或“綁定已有帳號(hào)”的方式向Moodle平臺(tái)提供自己的郵箱地址、真實(shí)姓名等信息。如果用戶已經(jīng)擁有Moodle網(wǎng)站的注冊(cè)帳號(hào),可以將Moodle網(wǎng)站帳號(hào)與Openid進(jìn)行綁定,綁定就是再插入一條將Openid和Moodle平臺(tái)帳號(hào)聯(lián)系起來(lái)的記錄,并清除已有的Openid及對(duì)應(yīng)沒(méi)有完善的用戶信息記錄。這里需要驗(yàn)證原有的用戶名和密碼是否正確。如果沒(méi)有Moodle平臺(tái)網(wǎng)站的帳號(hào),可以對(duì)Openid所對(duì)應(yīng)的用戶記錄進(jìn)行完善。這里可以對(duì)用戶名進(jìn)行修改,需要驗(yàn)證用戶名和郵件地址是否已經(jīng)被注冊(cè)過(guò),完善之后就可以使用Moodle平臺(tái)本身的登錄方式進(jìn)行登錄。該QQ登錄模塊的結(jié)構(gòu)如圖1所示。
在具體開(kāi)發(fā)中,需要對(duì)Moodle系統(tǒng)原有數(shù)據(jù)庫(kù)中添加一個(gè)將Moodle平臺(tái)的用戶表與QQ登錄的openid值對(duì)應(yīng)起來(lái)的表qq_openid,該表包括數(shù)據(jù)項(xiàng)自動(dòng)編號(hào)、用戶id、openid,數(shù)據(jù)結(jié)構(gòu)如表1所示。
表1 Moodle中qq_openid表的結(jié)構(gòu)
QQ登錄模塊的具體實(shí)現(xiàn)可分為三部分:功能實(shí)現(xiàn)、模塊化處理及安裝與設(shè)置。功能實(shí)現(xiàn)是在Moodle實(shí)現(xiàn)QQ登錄功能,是QQ登錄模塊實(shí)現(xiàn)的基礎(chǔ);模塊化處理則將QQ登錄進(jìn)行模塊化,按Moodle官網(wǎng)的標(biāo)準(zhǔn)封裝成一個(gè)Moodle插件,這樣就和Moodle官網(wǎng)上的插件一樣,可以在所有moodle 2.4+網(wǎng)站中安裝使用;最后是安裝與設(shè)置,安裝和設(shè)置完后就可以正常使用了。
2.2.1 QQ登錄功能的實(shí)現(xiàn) 在Moodle平臺(tái)上實(shí)現(xiàn)QQ登錄功能,首先,需要修改Moodle數(shù)據(jù)庫(kù),即在Moodle系統(tǒng)數(shù)據(jù)庫(kù)中添加qq_openid表。然后,在Moodle平臺(tái)原有的登錄頁(yè)面或版塊添加代碼。最后,在Moodle平臺(tái)源碼目錄下創(chuàng)建一個(gè)qq_login文件夾,用這個(gè)文件夾中的文件實(shí)現(xiàn)具體的功能。qq_login這個(gè)文件夾具體實(shí)現(xiàn)回調(diào)(使用回調(diào)代碼)、添加數(shù)據(jù)表qq_openid、接收openid和QQ昵稱進(jìn)行處理(包括登錄和注冊(cè))、完善帳號(hào)信息、綁定已有帳號(hào)功能,這些功能使用PHP文件獨(dú)立實(shí)現(xiàn),沒(méi)有交叉。
在Moodle平臺(tái)原有的登錄頁(yè)面或版塊添加代碼,可以在Moodle平臺(tái)源碼目錄下登錄頁(yè)面(login/index_form.html)或登錄版塊(blocks/login/block_login.php)中添加。筆者選擇在首頁(yè)的登錄版塊中添加了代碼。登錄版塊通過(guò)!isloggedin()or isgues-tuser()的條件判斷來(lái)區(qū)分用戶是否登錄網(wǎng)站,如果是,則是沒(méi)有登錄的用戶;如果不是,則是已經(jīng)登錄的用戶。當(dāng)用戶還沒(méi)登錄網(wǎng)站時(shí)顯示QQ登錄圖標(biāo)(如圖2所示),以便用戶點(diǎn)擊,并接收QQ帳號(hào)安全登錄頁(yè)面?zhèn)鬟f的參數(shù),將這些參數(shù)傳遞到qq_login文件夾中進(jìn)行登錄或注冊(cè)處理。
騰訊出于隱私保護(hù)的考慮,并不會(huì)給接入網(wǎng)站提供涉及用戶隱私的信息,所以如果Moodle平臺(tái)想要獲取用戶的詳細(xì)信息,則需要用戶完善自己的帳號(hào)信息或綁定已有帳號(hào)?!巴晟茙ぬ?hào)信息”和“綁定已有帳號(hào)”這兩個(gè)鏈接會(huì)在用戶QQ登錄后一直出現(xiàn)在登錄版塊中,以便需要的用戶向Moodle平臺(tái)提供
圖2 Moodle中QQ登錄的界面
自己的郵件地址等詳細(xì)信息。
完善帳號(hào)信息需要判斷填寫(xiě)的用戶名、郵件地址是否已被注冊(cè)過(guò),也需要使得輸入的信息符合網(wǎng)站要求(這些要求需要與Moodle平臺(tái)的網(wǎng)站策略相符),驗(yàn)證則使用javascript客戶端代碼實(shí)現(xiàn)。如果用戶填寫(xiě)的信息不符合要求,則單擊完善帳號(hào)信息按鈕會(huì)提示錯(cuò)誤信息;如果符合要求,則將信息提交到完善帳號(hào)信息處理頁(yè)面,處理完后自動(dòng)重新登錄到Moodle平臺(tái)網(wǎng)站中。綁定已有帳號(hào)則需要驗(yàn)證用戶名和密碼是否正確,驗(yàn)證完后將用戶id和openid插入到qq_openid表中,并自動(dòng)重新登錄到Moodle平臺(tái)網(wǎng)站中。
2.2.2 模塊化處理 為了更加方便地在Moodle網(wǎng)站上移植與使用,筆者按照Moodle官網(wǎng)上的開(kāi)發(fā)者文檔[7],將代碼進(jìn)行了模塊化處理,封裝成插件。
參照Moodle官網(wǎng)的開(kāi)發(fā)文檔,創(chuàng)建qq登錄模塊文件夾qclogin(筆者以這個(gè)為例),在里面創(chuàng)建四個(gè)文件 block_qclogin.php、db/access.php、lang/en/block_qclogin.php、version.php。其中 block_qclogin.php為qq登錄模塊的入口文件,在初始化函數(shù)init中需要添加數(shù)據(jù)庫(kù)表創(chuàng)建語(yǔ)句,而在get_content函數(shù)中則需要填入qq登錄功能的入口代碼,與qq登錄功能整合在一起,db/access.php是訪問(wèn)控制,version.php則存儲(chǔ)著版塊的版本信息以及對(duì)Moodle的版本要求,lang/en/block_qclogin.php則為這個(gè)模塊的語(yǔ)言文件。
為了更加簡(jiǎn)易地修改和填入appid(這個(gè)值在qq互聯(lián)平臺(tái)上申請(qǐng)而來(lái),不同域名不同appid),筆者添加了 edit_form.php,并在 block_qclogin.php處將appid改為變量 $this->config->text。
2.2.3 安裝與設(shè)置 與一般Moodle插件的安裝方法一樣。首先將qclogin這個(gè)文件夾放入moodle目錄下的blocks文件夾內(nèi),其次使用管理員身份,進(jìn)入網(wǎng)站管理通告,按照提示往下安裝即可完成安裝。
安裝完成后,需要在首頁(yè)上添加QQ登錄模塊并進(jìn)行設(shè)置。打開(kāi)編輯功能,添加QQ登錄版塊,單擊在添加的QQ登錄版塊上設(shè)置圖標(biāo),填入在QQ互聯(lián)平臺(tái)上申請(qǐng)的appid,保存,這樣QQ登錄模塊就可以在網(wǎng)站中使用了。
如果想讓QQ登錄模塊在全站使用,則可以在QQ登錄設(shè)置中將頁(yè)面工作場(chǎng)景修改為在全站中可以使用。如果還想在任意頁(yè)面登錄后調(diào)回到該任意頁(yè)面,則需要在block_qclogin.php的if(!isloggedin()or isguestuser())內(nèi)添加代碼$SESSION->wantsurl=qualified_me().
該QQ登錄模塊于2013年3月份開(kāi)始測(cè)試,2013年4月份正式使用。為了獲取模塊應(yīng)用前后用戶在“教育技術(shù)開(kāi)放教育資源”網(wǎng)站登錄次數(shù)的變化,筆者從該Moodle網(wǎng)站的數(shù)據(jù)庫(kù)獲取了3個(gè)月用戶登錄的數(shù)據(jù)(如表2所示)。從表2可知,自從QQ登錄模塊投入使用后,用戶使用QQ登錄的次數(shù)在迅速增長(zhǎng)。
表2 通過(guò)QQ登錄模塊登錄Moodle的次數(shù)
雖然Moodle可以滿足我們大部分的需求,但在實(shí)際教學(xué)應(yīng)用中,由于環(huán)境的差異性,總會(huì)有些個(gè)性化的需求出現(xiàn),因此對(duì)Moodle平臺(tái)進(jìn)行二次開(kāi)發(fā)就非常有必要[8]。該研究就是結(jié)合國(guó)內(nèi)用戶的特點(diǎn)和實(shí)際需求對(duì)Moodle進(jìn)行二次開(kāi)發(fā)的一種嘗試。Moodle原有的注冊(cè)系統(tǒng)盡管比較安全但比較繁瑣,而通過(guò)國(guó)內(nèi)用戶廣泛使用的QQ直接登錄Moodle系統(tǒng),既方便快捷又安全可靠。經(jīng)過(guò)應(yīng)用我們也發(fā)現(xiàn),由于QQ用戶在國(guó)內(nèi)十分廣泛,所以Moodle系統(tǒng)中設(shè)計(jì)開(kāi)發(fā)的QQ登錄模塊其實(shí)也可以用來(lái)完全取代Moodle自身的注冊(cè)和登錄系統(tǒng),這樣既可以有效防止國(guó)外機(jī)器程序的注冊(cè),也可以進(jìn)一步使Moodle走向本土化。
對(duì)于Moodle系統(tǒng)中QQ登錄模塊的開(kāi)發(fā)而言,筆者通過(guò)查看“教育技術(shù)開(kāi)放教育資源”網(wǎng)站的數(shù)據(jù)庫(kù)發(fā)現(xiàn),多數(shù)使用QQ登錄的用戶都沒(méi)有完善自己的信息或綁定過(guò)已有帳號(hào)。這種狀況既有優(yōu)點(diǎn)也有缺點(diǎn)。優(yōu)點(diǎn)在于可以在不透露自己任何信息的情況下以學(xué)生身份正常訪問(wèn)Moodle平臺(tái)進(jìn)行學(xué)習(xí)。而缺點(diǎn)則是如果使用QQ登錄的用戶沒(méi)有完善過(guò)自己的信息或綁定過(guò)已有帳號(hào),網(wǎng)站中的其他用戶(包括課程教師和管理員)將無(wú)法通過(guò)郵件的方式向他(或她)發(fā)送信息,也無(wú)法獲取他(或她)的真實(shí)姓名、國(guó)家地區(qū)等詳細(xì)信息。所以在課程教學(xué)中,如果教師想使用郵件的方式向?qū)W生發(fā)送信息或通告,則需要提醒學(xué)生完善帳號(hào)信息或綁定已有帳號(hào)。
截止目前,筆者只實(shí)現(xiàn)了Moodle平臺(tái)與QQ互聯(lián)開(kāi)放平臺(tái)中QQ一鍵登錄的整合。加拿大學(xué)者George Siemens和Stephen Downes的開(kāi)放課程—《關(guān)聯(lián)主義和關(guān)聯(lián)的知識(shí)》(CCK08)開(kāi)啟了關(guān)聯(lián)主義MOOC的先河。Stephen Downes概括了關(guān)聯(lián)主義在教與學(xué)實(shí)踐中的四大活動(dòng),其中有一個(gè)很重要的活動(dòng)是分享(feeding forward)[9]。他認(rèn)為學(xué)生應(yīng)該將他們創(chuàng)建的內(nèi)容與課程的其他學(xué)生以及與全世界分享。當(dāng)然這種分享應(yīng)遵循自愿而非強(qiáng)制的原則。這種分享能夠使你更加努力、思考更多,你得到的回報(bào)也更多,有時(shí)候是批評(píng)意見(jiàn),但更經(jīng)常的是支持、幫助和贊揚(yáng)。這種分享所帶來(lái)的回報(bào)要比一些分?jǐn)?shù)和獎(jiǎng)勵(lì)系統(tǒng)更好一些。由此,筆者認(rèn)為在Moodle中的QQ登錄模塊基礎(chǔ)上,我們還應(yīng)該進(jìn)一步研究開(kāi)發(fā)Moodle中的分享功能模塊,以便教師、學(xué)生將Moodle中的課程內(nèi)容、自己的成果自愿分享到QQ空間、騰訊微博等社交圈中,這樣用戶就可以將Moodle網(wǎng)站中的師生、生生互動(dòng)延伸和拓展到個(gè)人的社交網(wǎng)絡(luò)中,從而搭建起個(gè)性化的社會(huì)學(xué)習(xí)網(wǎng)絡(luò)環(huán)境。
[1]Moodle Pty Ltd.About Moodle[EB/OL].http://docs.moodle.org/25/en/Philosophy,2013-07-14
[2]Moodle Pty Ltd.Moodle Statistics[EB/OL].https://moodle.org/sites/,2013-07-14
[3]馬紅亮,Li Y,Powell S,等.引入國(guó)外開(kāi)放課程構(gòu)建網(wǎng)絡(luò)學(xué)習(xí)新模式[J].電化教育研究,2011,(9):68-74
[4]騰訊公司.關(guān)于騰訊[EB/OL].http://www.tencent.com/zh-cn/at/abouttencent.shtml,2013-07-14
[5]騰訊公司.網(wǎng)站接入概述[EB/OL].http://wiki.connect.qq.com,2013-07-14
[6]西蒙斯.關(guān)聯(lián)主義:數(shù)字時(shí)代的一種學(xué)習(xí)理論[J].李萍譯.全球教育展望,2005,(8):9-13
[7]Moodle Pty Ltd.Blocks development[EB/OL].http://docs.moodle.org/dev/Blocks,2013-07-14
[8]葉海松,季雋.Moodle的二次開(kāi)發(fā)與設(shè)計(jì)[J].電化教育研究,2007,(4):50-55
[9]Downes S.'Connectivism'and Connective Knowledge[EB/OL].http://www.downes.ca/post/54540,2011-01-07
中國(guó)醫(yī)學(xué)教育技術(shù)2014年2期