moodle三方登录-QQ平台的应用-moodle二次开发

背景

之前做过微信在moodle中登录的应用,实现了扫码登录和微信公众号的静默登录,本文介绍QQ和微博的基本应用,微信需要企业认证,然而QQ和微博只需要个人和域名认证即可,要求没那么高,用来做个人开发足够了。都能实现社交平台的快速登录,本文将重点介绍登录的流程与一些关键代码的实现。

也可以先参考微信扫码登录的这篇文章:Moodle三方登录—微信平台的应用

关键实现:

一、数据库

为了尽可能少的影响moodle系统本身的数据库,我新建了一个数据表,参考资料中的第一个文章有介绍。

新建mdl_user_qq

字段为:id,userid,openid.

(可以设置id或者userid为主键,userid跟mdl_user用户表建立连接)

二、登录流程

首先,要比较熟悉QQ互联的基本登录过程,可以参考资料第二篇文章,但是最新的moodle由于采用的是新的php7,部分php函数进行了升级,而最新的QQ_sdk_php还是2013年的,所以有个函数需要修改。

修改URL.class.php中的get_contents函数为:

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,找到后,调用moodle本身的登录函数,设置Cookie等基本操作。(可以参考开头给的微信登录的链接,函数已经有描述)

关键代码提示:

config.php配置文件,必须包含,在moodle根目录下。

login/lib.php:get_complete_user_data函数和complete_user_login( $user )函数都需要引用这个php文件。

其他的代码就需要自己进行补充说明了,整体难度不是很大吧,但是需要自己对其中的登录流程比较熟悉。

关键代码的实现:

1、login/中添加QQ扫码的按钮:

moodle\theme\boost\templates\core\loginform.mustache, 在大约176行左右添加

一行登录按钮的,可以跟上面的登录一样,将链接文字修改即可。

moodle三方登录-QQ平台的应用-moodle二次开发_第1张图片

2、QQ扫码界面:

login/qq/index.php:参考资料2中,默认内容可以是:

require_once("API/qqConnectAPI.php");

$qc = new QC();

$qc->qq_login();

?>

回调页面设置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和基本信息之后,就可以进行结合moodle本身进行登录流程了。

参考资料

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

2、通过QQ互联实现网站第三方登录

(注意:QQ_sdk_php代码有点老了,需要修改一处代码)

3、微信开放平台开发——网页微信扫码登录(OAuth2.0)

后话

moodle的二次开发资料很少,笔者也是摸索多年的经验,从安装到一些简单的开发,还有一些源代码的阅读等,后耗费了很多时间和精力,同时我也有一些折腾的经验。如果你需要技术支持,可以在点击我的淘宝店铺找到我进行咨询,谢谢。

你可能感兴趣的:(moodle三方登录-QQ平台的应用-moodle二次开发)