Moodle系统中QQ登录模块的开发与应用

2014-03-16 07:51李如亮马红亮洋陕西师范大学教育学院西安7006四川师范大学教务处教学研究与评估科成都60068
中国医学教育技术 2014年2期
关键词:帐号开放平台版块

李如亮,马红亮,杨 洋陕西师范大学教育学院,西安 7006;四川师范大学教务处教学研究与评估科,成都 60068

Moodle是一款开源的课程管理系统(CMS),它也被称为学习管理系统(LMS)或虚拟学习环境(VLE)。Moodle在全球教育工作者中非常流行,被广大教师用来为学生创建具有动态内容的网站。Moodle的设计与开发遵循社会建构主义教学法(social constructionist pedagogy),其基本结构是围绕课程而组织的[1]。截止2013年7月14日,Moodle的全球注册网站已达84 537个,且遍及237个国家,而这些注册网站的总课程数已超过700万,用户已达7 000万之多[2]。中国大陆的Moodle注册网站也有1 074个,其中既有高校、中学、小学等学校组织创建的课程网站,也有许多企业以及个人所创建的网站[1]。笔者于2011年用Moodle搭建了英国博尔顿大学教育控制论研究所针对国内研究生设计开发的一门开放课程,并探索网络学习的新模式[3]。此后,笔者将该Moodle网站扩建为教育技术开放教育资源网站,定位于全国范围内共建共享教育技术学的开放课程资源。目前该开放教育资源网站注册用户已超过1 200,已共建共享了近50门国内外教育技术学领域的开放课程。然而,在使用过程中,许多用户认为Moodle的注册过程比较繁琐,希望能够简化Moodle的注册以及登录模块,使进入网站学习的过程能够更加快捷和方便。经过分析我们发现,Moodle系统的注册登录模块出于网站安全等因素的考虑(如防止机器注册)需要用户输入近10项信息,包括用户名、密码、邮箱地址、姓、名、市/县、国家和地区以及reCAPTCHA验证码,而且还要验证邮箱之后才能登录,这一过程的确显得比较繁琐。为此,我们需要找到一种比较方便快捷且安全的注册登录Moodle的方式。

1 Moodle中嵌入QQ登录的价值

腾讯QQ是一款家喻户晓、妇孺皆知的即时通信软件。“截止2012年12月31日,QQ即时通信的活跃帐户数达到7.982亿,最高同时在线帐户数达到1.764亿”[4]。可见,QQ在国内应用十分广泛。而 QQ互联开放平台则为第三方网站提供了丰富的API。第三方网站接入QQ互联开放平台后,即可通过调用该开放平台提供的API实现用户使用QQ账号登录第三方网站的功能。第三方网站也可以调用腾讯公司提供的API实现网站的分享、评论、邀请等功能,即网站的社交化功能。且可以将相关信息同步到QQ空间、腾讯朋友、腾讯微博等平台,建立网站与腾讯各平台的互动关系,利用庞大的QQ用户群来实现网站的快速传播[5]。在网站接入方式方面,第三方网站主要通过使用“QQ登录”接入QQ互联开放平台。目前,许多大型商业网站都将自身网站与QQ登录进行了整合,如豆丁网、PPTV网络电视、酷我音乐、赶集网、58同城、当当网,等,给用户带来了方便、快捷的体验。

作为应用广泛的网络教育平台,Moodle也有必要借鉴商业网站的行为来改进和完善自己的登录系统,从而更好地服务于网络教与学。将Moodle平台与QQ登录进行整合具有如下几点益处:①可以极大地简化用户注册和登录的步骤。用户只需要使用已有的QQ号码即可登录Moodle网站,从而大幅减少注册和登录Moodle网站的操作步骤,且能够给网站带来一定数量的新用户;②方便实现社会网络化学习。通过QQ登录Moodle的用户可以将在Moodle网站上发布、分享的信息即时同步到QQ空间、腾讯微博,等,从而进一步在个人的社会空间中与他人展开交流,这有助于实现Siemens和Stephen Downes提出的关联主义学习理论[6]所强调的社会网络化学习。

2 Moodle中QQ登录模块的设计与实现

在Moodle系统中开发QQ登录模块,需要在修改Moodle相关程序的基础上调用腾讯开放平台所提供的服务。从网站通过QQ登录接入QQ互联开放平台的流程来看,该模块的开发需要依次完成以下几个步骤:①开发者在QQ互联开放平台注册Moodle网站;②申请Moodle网站对应的appid与appkey;③对Moodle网站进行相应的二次开发;④申请上线并使用QQ互联提供的OpenAPI。在对Moodle网站进行相应的二次开发时,有两种方式可供选择:其一,使用QQ互联提供的SDK包;其二,根据QQ登录OAuth 2.0协议自主开发。前者只需要修改少量代码,便可快速接入QQ登录的应用;后者自定义程度较高,但开发过程相对复杂一些。该研究采用第一种接入方式,这种方式从技术构成上看属于数据库应用类的Web应用模块,需要应用PHP对MySQL数据库进行添加、删除、查找、修改等操作。

2.1 QQ登录模块的结构设计

根据Moodle系统与QQ登录整合的实现目标,该模块需要具有用户登录注册、绑定已有用户、完善帐号信息的功能。首先,用户使用QQ登录模块登录Moodle时,单击QQ登录图标获取Openid进行验证,验证时要与Moodle数据库创建的qq_openid表中的Openid字段信息进行比较。如果qq_openid表中有获取的Openid信息,并有对应的userid用户表记录,则验证成功。只有验证成功后方可以登录到Moodle平台,并以用户身份访问网站或者更改自己资料。用户登录后,借助于SESSION信息存储会员登录状态,以便在不同的页面访问时无需再次登录验证。否则,需要在用户表和qq_openid表中插入记录,完成注册,并登录到Moodle平台中。接着,使用QQ登录的用户可以通过“完善帐号信息”或“绑定已有帐号”的方式向Moodle平台提供自己的邮箱地址、真实姓名等信息。如果用户已经拥有Moodle网站的注册帐号,可以将Moodle网站帐号与Openid进行绑定,绑定就是再插入一条将Openid和Moodle平台帐号联系起来的记录,并清除已有的Openid及对应没有完善的用户信息记录。这里需要验证原有的用户名和密码是否正确。如果没有Moodle平台网站的帐号,可以对Openid所对应的用户记录进行完善。这里可以对用户名进行修改,需要验证用户名和邮件地址是否已经被注册过,完善之后就可以使用Moodle平台本身的登录方式进行登录。该QQ登录模块的结构如图1所示。

在具体开发中,需要对Moodle系统原有数据库中添加一个将Moodle平台的用户表与QQ登录的openid值对应起来的表qq_openid,该表包括数据项自动编号、用户id、openid,数据结构如表1所示。

表1 Moodle中qq_openid表的结构

2.2 QQ登录模块的具体实现

QQ登录模块的具体实现可分为三部分:功能实现、模块化处理及安装与设置。功能实现是在Moodle实现QQ登录功能,是QQ登录模块实现的基础;模块化处理则将QQ登录进行模块化,按Moodle官网的标准封装成一个Moodle插件,这样就和Moodle官网上的插件一样,可以在所有moodle 2.4+网站中安装使用;最后是安装与设置,安装和设置完后就可以正常使用了。

2.2.1 QQ登录功能的实现 在Moodle平台上实现QQ登录功能,首先,需要修改Moodle数据库,即在Moodle系统数据库中添加qq_openid表。然后,在Moodle平台原有的登录页面或版块添加代码。最后,在Moodle平台源码目录下创建一个qq_login文件夹,用这个文件夹中的文件实现具体的功能。qq_login这个文件夹具体实现回调(使用回调代码)、添加数据表qq_openid、接收openid和QQ昵称进行处理(包括登录和注册)、完善帐号信息、绑定已有帐号功能,这些功能使用PHP文件独立实现,没有交叉。

在Moodle平台原有的登录页面或版块添加代码,可以在Moodle平台源码目录下登录页面(login/index_form.html)或登录版块(blocks/login/block_login.php)中添加。笔者选择在首页的登录版块中添加了代码。登录版块通过!isloggedin()or isgues-tuser()的条件判断来区分用户是否登录网站,如果是,则是没有登录的用户;如果不是,则是已经登录的用户。当用户还没登录网站时显示QQ登录图标(如图2所示),以便用户点击,并接收QQ帐号安全登录页面传递的参数,将这些参数传递到qq_login文件夹中进行登录或注册处理。

腾讯出于隐私保护的考虑,并不会给接入网站提供涉及用户隐私的信息,所以如果Moodle平台想要获取用户的详细信息,则需要用户完善自己的帐号信息或绑定已有帐号。“完善帐号信息”和“绑定已有帐号”这两个链接会在用户QQ登录后一直出现在登录版块中,以便需要的用户向Moodle平台提供

图2 Moodle中QQ登录的界面

自己的邮件地址等详细信息。

完善帐号信息需要判断填写的用户名、邮件地址是否已被注册过,也需要使得输入的信息符合网站要求(这些要求需要与Moodle平台的网站策略相符),验证则使用javascript客户端代码实现。如果用户填写的信息不符合要求,则单击完善帐号信息按钮会提示错误信息;如果符合要求,则将信息提交到完善帐号信息处理页面,处理完后自动重新登录到Moodle平台网站中。绑定已有帐号则需要验证用户名和密码是否正确,验证完后将用户id和openid插入到qq_openid表中,并自动重新登录到Moodle平台网站中。

2.2.2 模块化处理 为了更加方便地在Moodle网站上移植与使用,笔者按照Moodle官网上的开发者文档[7],将代码进行了模块化处理,封装成插件。

参照Moodle官网的开发文档,创建qq登录模块文件夹qclogin(笔者以这个为例),在里面创建四个文件 block_qclogin.php、db/access.php、lang/en/block_qclogin.php、version.php。其中 block_qclogin.php为qq登录模块的入口文件,在初始化函数init中需要添加数据库表创建语句,而在get_content函数中则需要填入qq登录功能的入口代码,与qq登录功能整合在一起,db/access.php是访问控制,version.php则存储着版块的版本信息以及对Moodle的版本要求,lang/en/block_qclogin.php则为这个模块的语言文件。

为了更加简易地修改和填入appid(这个值在qq互联平台上申请而来,不同域名不同appid),笔者添加了 edit_form.php,并在 block_qclogin.php处将appid改为变量 $this->config->text。

2.2.3 安装与设置 与一般Moodle插件的安装方法一样。首先将qclogin这个文件夹放入moodle目录下的blocks文件夹内,其次使用管理员身份,进入网站管理通告,按照提示往下安装即可完成安装。

安装完成后,需要在首页上添加QQ登录模块并进行设置。打开编辑功能,添加QQ登录版块,单击在添加的QQ登录版块上设置图标,填入在QQ互联平台上申请的appid,保存,这样QQ登录模块就可以在网站中使用了。

如果想让QQ登录模块在全站使用,则可以在QQ登录设置中将页面工作场景修改为在全站中可以使用。如果还想在任意页面登录后调回到该任意页面,则需要在block_qclogin.php的if(!isloggedin()or isguestuser())内添加代码$SESSION->wantsurl=qualified_me().

3 Moodle系统中QQ登录模块的应用效果

该QQ登录模块于2013年3月份开始测试,2013年4月份正式使用。为了获取模块应用前后用户在“教育技术开放教育资源”网站登录次数的变化,笔者从该Moodle网站的数据库获取了3个月用户登录的数据(如表2所示)。从表2可知,自从QQ登录模块投入使用后,用户使用QQ登录的次数在迅速增长。

表2 通过QQ登录模块登录Moodle的次数

4 结论与讨论

虽然Moodle可以满足我们大部分的需求,但在实际教学应用中,由于环境的差异性,总会有些个性化的需求出现,因此对Moodle平台进行二次开发就非常有必要[8]。该研究就是结合国内用户的特点和实际需求对Moodle进行二次开发的一种尝试。Moodle原有的注册系统尽管比较安全但比较繁琐,而通过国内用户广泛使用的QQ直接登录Moodle系统,既方便快捷又安全可靠。经过应用我们也发现,由于QQ用户在国内十分广泛,所以Moodle系统中设计开发的QQ登录模块其实也可以用来完全取代Moodle自身的注册和登录系统,这样既可以有效防止国外机器程序的注册,也可以进一步使Moodle走向本土化。

对于Moodle系统中QQ登录模块的开发而言,笔者通过查看“教育技术开放教育资源”网站的数据库发现,多数使用QQ登录的用户都没有完善自己的信息或绑定过已有帐号。这种状况既有优点也有缺点。优点在于可以在不透露自己任何信息的情况下以学生身份正常访问Moodle平台进行学习。而缺点则是如果使用QQ登录的用户没有完善过自己的信息或绑定过已有帐号,网站中的其他用户(包括课程教师和管理员)将无法通过邮件的方式向他(或她)发送信息,也无法获取他(或她)的真实姓名、国家地区等详细信息。所以在课程教学中,如果教师想使用邮件的方式向学生发送信息或通告,则需要提醒学生完善帐号信息或绑定已有帐号。

截止目前,笔者只实现了Moodle平台与QQ互联开放平台中QQ一键登录的整合。加拿大学者George Siemens和Stephen Downes的开放课程—《关联主义和关联的知识》(CCK08)开启了关联主义MOOC的先河。Stephen Downes概括了关联主义在教与学实践中的四大活动,其中有一个很重要的活动是分享(feeding forward)[9]。他认为学生应该将他们创建的内容与课程的其他学生以及与全世界分享。当然这种分享应遵循自愿而非强制的原则。这种分享能够使你更加努力、思考更多,你得到的回报也更多,有时候是批评意见,但更经常的是支持、帮助和赞扬。这种分享所带来的回报要比一些分数和奖励系统更好一些。由此,笔者认为在Moodle中的QQ登录模块基础上,我们还应该进一步研究开发Moodle中的分享功能模块,以便教师、学生将Moodle中的课程内容、自己的成果自愿分享到QQ空间、腾讯微博等社交圈中,这样用户就可以将Moodle网站中的师生、生生互动延伸和拓展到个人的社交网络中,从而搭建起个性化的社会学习网络环境。

[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,等.引入国外开放课程构建网络学习新模式[J].电化教育研究,2011,(9):68-74

[4]腾讯公司.关于腾讯[EB/OL].http://www.tencent.com/zh-cn/at/abouttencent.shtml,2013-07-14

[5]腾讯公司.网站接入概述[EB/OL].http://wiki.connect.qq.com,2013-07-14

[6]西蒙斯.关联主义:数字时代的一种学习理论[J].李萍译.全球教育展望,2005,(8):9-13

[7]Moodle Pty Ltd.Blocks development[EB/OL].http://docs.moodle.org/dev/Blocks,2013-07-14

[8]叶海松,季隽.Moodle的二次开发与设计[J].电化教育研究,2007,(4):50-55

[9]Downes S.'Connectivism'and Connective Knowledge[EB/OL].http://www.downes.ca/post/54540,2011-01-07

猜你喜欢
帐号开放平台版块
基于百度地图开放平台的导航电子地图课程实践教学研究
基于在线开放平台的混合式课堂教学模式构建与实践
《科学与社会》“STS研究”版块2021年征稿启事
加大对“无抗”、“替抗”的产品的研发,润盈明年要在中草药版块再度发力
基于AliGenie语音开放平台的传统家居智联网解决方案
云计算开放平台的知识产权问题研究