针对于测试公众号获取不到openid:
本人条件是通过内网映射,把自己电脑挂成微擎服务器,然后与微信提供的微信测试公众号进行相互的配置,来进行测试的。以下为微信测试公众号链接。
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
有时候你会发现,在你的写测试方法里面,有时候会获得不到openid,其实关键在于要触发模块addons的封面链接,即mainfest.XML里面的
<cover> <entry title="交易记录" do="transaction" state="" direct="false" /> <entry title="操作记录" do="operate" state="" direct="false" /> <entry title="设备管理" do="management" state="" direct="false" /> </cover>
比如操作记录,它触发的是site.php里面的doMobileOperate()方法,然后把这个作为测试方法,在里面打印openid。
你需要自己在微擎,设置你的封面链接的触发关键字。
1.你在测试公众号里发送,你设置的测试关键字,然后系统知道你触发的是你的写的模块的封面,之后你的模块就能获取到你的openid了。
2.发送了关键字还不好使,那么你再点一下你的封面链接,进入doMobileOperate()方法里去,之后你的模块就能获取到你的openid了。
进入封面链接加多个参数:
由于我的app端的设计是MVC的,进入到doMobileOperate()后,我还想进入到控制器里面去,那么在site.php写如下方法:
public function doMobileOperate(){ global $_W; $dir = IA_ROOT . '/addons/' . $this->modulename . '/'; $dir .= 'app/'; $file = $dir . 'index.php'; if(file_exists($file)) { global $_GPC; $_GPC['do']='scangenerate'; $_GPC['ac']='scan'; $_GPC['op']='door_teacher'; $_GPC['info_id']='XX'; $_GPC['door']='X'; $_GPC['random']='XXXXXXXXX'; $_GPC['device_name']='XX馆'; require $file; exit; } }
其中do,ac,op参数是用于选择控制器里面的某个方法的。用$_GPC来直接设置链接的get参数,但实际你查看链接时,发现链接只具体到do参数,因为封面链接只会具体到do。
其实也不用上面这样设置参数,因为如果已经能获取到openid的话,那就点实际的链接就行了。。。只是提供更一种思路。