最近做了一个微信投票系统,这是第一次开发微信项目,所以特此记录一下
微信投票系统,最优先想到的就是授权登录,以及获取用户信息
1.首先需要申请微信公众号(此次使用的是服务号)
2.在微信公众平台基本配置里面,获取appid和秘钥,以及填写白名单,按照要去填写即可
3.此次是使用自己开发的授权登录插件,直接将插件解压到addons目录下,然后找到application/extra/addons.php文件,然后在array里面添加一下代码
'get_weixin_auth' =>
array (
0 => 'weixin',
),
'get_weixin_config' =>
array (
0 => 'weixin',
),
'wx_login' =>
array (
0 => 'weixin',
),
'get_weixin_upload_single' =>
array (
0 => 'weixin',
),
'get_weixin_upload_multiple' =>
array (
0 => 'weixin',
),
'get_weixin_location' =>
array (
0 => 'weixin',
),
'get_weixin_share' =>
array (
0 => 'weixin',
),
3.前台调用方法为
public function wxlogin(){
hook('get_weixin_auth',['backUrl'=>'此处填写回调地址']);
}
4.在跳转到项目首页之前就应该执行存储用户信息的操作
public function saveinfo(){
$data=input('');
$res=db('voter')->where('openid',$data['openid'])->find();
if($res){
session('user',$res);
$this->user=$res;
$this->uid=$res['id'];
$this->redirect(url("index/index"));
}
else{
$udata['nickname']=$data['nickname'];
$udata['openid']=$data['openid'];
$udata['headimage']=$data['headimgurl'];
$out=db('voter')->insert($udata);
if($out){
$res=db('voter')->where('openid',$data['openid'])->find();
session('user',$res);
$this->user=$res;
$this->uid=$res['id'];
$this->redirect(url("index/index"));
}
else{
$this->error('保存信息出错');
}
}
}
5.配置完成之后,在fastadmin后台找到放入的插件(微信开发),然后配置appid和appsecret
6.在微信公众平台的接口权限-》网页服务-》网页授权-》网页授权获取用户基本信息,点击修改,按照要求填写域名,每个都要填写。
本人在这一步遇到一个问题,而且至今没有解决。。。此项目最开始是放在西部数码的虚拟主机上进行编写的,但是到了这一步之后,始终不能成功,显示无法访问xxx指向的web服务器(或虚拟主机)的目录,请检查网络设置。域名是已备案的域名,也将他指定的文件下载放到目录下,通过直接访问可以成功访问文件,但是还是显示此错误,最后各种尝试都试过了,还是不行,只得联系西部数码的技术,他们让我联系微信客服解决,明明已经可以直接访问人家指定的文件了,肯定不是微信那边的问题,面对这种甩锅行为,我只能将项目重新放到另一台服务器上进行开发,分分钟搞定,完全没有出现此种问题。。虽然此次项目解决了,但是仍然存留这样一个问题无法解决。
7.此项目还犯了一个错误,因为是前台进行套数据,我提供接口,然而并没有将接口继承授权登录的这个基类,目录结构有点凌乱,所以造成后面修改bug的时候很是恼火
如果哪位大神能够解决文中问题,还望大神能够指点一二,感激不尽