微擎联动的小程序本地测试获取获取用户信息失败
(因为****)
背景:
嗯嗯,就是获取open id的为null。看到开发这工具。
然后后面就卡在这里了,所以测试环境算是没有弄好。
解决过程:
1.只能说本地host以及vhost已经配置好一个ssl证书,具体这个不是我弄得,但是上网一查“本地如何获得ssl证书”,还是有教程的。(这个我不是专业的,请找适合自己接受程度的帖子学习,可能会更好吸收)。
2.小程序上的request域名,本地的域名是保证和线上后台设置的域名要一致,这个可是你自己设定的。作用就是只能允许该域名下的请求,别的小程序都会拒绝。
然后好像都没问题了。然后就去扒代码。
。。
。。。
。。。。。。。。。。。。。。。。。。。。。
第一步,查看network 请求的header请求地址,
看到地址我就应该想到微信app /source文件夹。(只有个文件夹是php文件还有一个是common文件也有,但是不是主要的业务逻辑代码。)
看到这个然后对应找到 c=auth ,a=session ,do =openid。然后我就找到了auth/session.ctrl.php
果然是有do参数 ‘openid’。然后请求的文件定位终于找到了。就是app/source/auth/session.ctrl.php
然后就断点
是的就是getOauthInfo这个函数出问题,然后找那个函数的出来的文件,找个好几个,最后定位在framework/class/account/wxapp.account.class.php(其实多看文件名,wxapp就是小程序,account就是账号有关微信小程序账号逻辑代码可以这样理解)。
所以,你们觉得是什么问题?后来,不知怎么想的,想想“这个 requsetApi函数是不是普通的请求"?
然后就在相同的脚本文件找到它,然后测试了下。
问题出来了,我想怎么现在的请求用的函数都要封装,搞到问题定位都麻烦。不过好像是和上面错误码函数连用的,我想说这压根和微信接口没问题好吗?纯属是本地环境问题。
然后“openssl”上网查了教程,直接php.ini是搜“openssl” “;extension=php_openssl.dll”将这个注释用的“;”给去了,保存重启。
总的说,原本对微信小程序用户信息获取逻辑的我,经过这次折腾,算是有点点长进。本地测试好了,就是方便,我才想,原来本地测试也能获取微信用户的信息,这个确实方便,以前一直以为一定要线上测试才可以,估计这个就是和开发者工具的是否校验ssl有关的吧。我在想如果每个人都用本地配置别人的请求域名,同时如果拿到请求的参数,那岂不是也能获取别人的用户数据?我觉得是不是应该将请求域名改为请求的IP才对。不过如果是这样,我们测试的就无法本地环境获取用户信息了。