基于微信的辅助教学系统的设计与实现
4) 签到表
签到表的核心字段包括mark和secret。本表只会有一条记录,每次设置只会更新内容。Mark字段为签到标志,限制学生能否进行签到。Secret为签到密码,由教师设置,学生签到时进行匹配。如图3-8所示。
图3-8 table qiandao
5) 作业表
作业表由id与work_content 两个字段组成。其中work_content 用于简单描述作业内容。如图3-9所示。
图3-9 table work
3.3 本章小结
本章主要讲述了系统的几个主要模块及其组成,以及格模块的主要功能结构。给出了几个主要的数据成员,并给出了几个主要的数据表。
12
基于微信的辅助教学系统的设计与实现
4 系统实现过程
4.1 公众号申请与基本配置
进行微信公众号的二次开发,首先要申请一个微信公众号,相关步骤相对简单。微信公众号分为订阅号和服务号,为获得全部的高级及接口权限,需要进行对服务号的认证。服务号认证的主体必须为企业或组织,并提供相关证明。公众号进入后主要如图4-1所示。
图 4-1 微信公众号
为满足一般开发者可以学习使用微信的高级接口并完成开发,微信公众号为开发者提拱了微信公众平台测试账号,我在进行开发时主要使用了微信开发者测试账号。微信公众平台测试账号提供了所有高级open API的功能,如客服接口、获取用户信息接口(部分接口有调用次数限制)。如图4-2及图4-3所示。
13
基于微信的辅助教学系统的设计与实现
图 4-2 测试账号(1)
图 4-3 测试账号(2)
14
基于微信的辅助教学系统的设计与实现
4.2 进行token验证
微信公众号在连接第三方开发者时,需要对接口及身份的有效性进行验证,即token验证。进行验证时,需要在微信公众平台对token值及验证链接进行接口配置,基本配置如图4-2所示,token值为weixin,验证链接为http://1.mywxfzjxxt.applinzi.com/index.php
.。
微信公众平台为token验证提供了接口,这部分在绪论中已做介绍,此部分提供实际代码。
define(\
if($wechatObj->valid()){//调用valid方法去验证,valid方法上文已经有介绍 echo $echoStr; exit;
}
}
//通过Wechat类,创建一个对象? $wechatObj = new Wechat(); //$p=1;
header('content-type:text'); include 'function.php'; include \
//如果没有通过GET收到echostr字符串, 说明不是再使用token验证 if (!isset($_GET['echostr'])) { echo 'aaa';
//调用wecat对象中的方法响应用户消息 $wechatObj->responseMsg(); //调用valid()方法,进行token验证 $echoStr = $_GET[\
}else{
此段代码用于token验证,只有通过验证,开发者才能对微信公众平台进行开发。微信在首次运行时,首先需要进行token验证,验证成功后,即获得开发者权限,并且对于同一个开发者或地址,不需要再一次进行验证
15
基于微信的辅助教学系统的设计与实现
4.3 菜单及基础性接口
在微信的二次开发中,需要定义及设计,一些接口,用于实现菜单、获取用户基本的信息等,为进一步开发实现功能。
4.3.1 获取access_token
为了获取信息及调用一些微信公众平台的接口,需要获取公众号的accesstoken进行验证,获取的接口https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret},需要用https的reguest进行请求。其中appid为:\,secret为\。具体代码如下:
void function get_token() {
$appid = \
$secret = \
$json
et}\请求接口
$arr = json_decode($json, true);
$access_token = $arr[\
return $access_token; }
=
https_request(\
4.3.2 获取用户信息
在对公众号进行二次开发时,信息中的openid是用户在公众号的身份标识,在需要对用户信息进行获取的时候,需要请求获取用户信息的接口,以获得用户的微信名称等信息。接口如下:https://api.weixin.qq.com/cgi-bin/user/info?access_token={$access_token}&openid={$openid}&lang=zh_CN,该接口需要在http协议下用request方法进行请求。获取的信息为json格式,需要解析为数组以方便访问。具体的实现如下:
function getUserInfo($openid) {
$access_token=get_token(); //global $access_token; $url
16
=