Cabloy集成到微信小程序的淌水笔记
终于搞定了小程序内嵌webview访问cabloy的最后一环。总结一下,分享给大家:
小程序简直就是生态割裂,程序员的噩梦,真心希望小程序世界早日大一统。
微信访问cabloy前端页面,需要搞定的事情:
- 注意https的坑。
a. 必须申请一个ssl证书,自己签发的证书浏览器可以访问,但是微信会拒绝。
b.注意在docker的ngin里配置开启443:443端口映射。否则无法访问。 - 注意设置wechatservice.com允许跨域。
- 微信那边设置业务域名。
- 如果出现微信开发工具提示 “未关注该测试号”的问题,先尝试访问普通静态页面(可在nginx里配置一个).如果可以访问,则排查微信自动登录问题,屏蔽这些模块再试。如果不能访问,检查前4项。
- 如果出现微信开发工具提示
“未绑定网页开发者url:http://x.a.com:9092/api/a/wechat/passport/a-wechat/wechat/callback"
则检查是否开通开放平台帐号(注意,和微信公众平台不一样,和小程序也不一样),并配置正确。或者直接禁用微信网页登录。可monkey替换a-wechat里面的wechatbutton. (wechatbuttonweb则用于pc端,可不必理会,没有开通微信开放平台也可以替换掉)。
微信小程序自动登录cabloy的问题,注意事项:
- 如果你的小程序是原生的,那么demo内的登录足够使用。
- 如果你的小程序内嵌webview来访问cabloy,那么就需要重新适配登录问题。
- 需要注意cabloy前端是单页应用,并且有统一的路由管理。对于任何通过url访问的前端,都会被重定向到/或login页面。所以除非关闭登录自动跳转,否则,通过传参给前端页面来登录是行不通的。
- 最后想到的解决办法,传参给后端。后端调用a-wechat的授权登录。
- 注意wx.login获得的code只能使用一次,所以不能使用util.login来登录,而是应该再次使用wx.login 获得code后传递给后端中转。注意,一定要中转。因为通过webview的页面访问这个中转页面,才是在webivew环境,否则用wx.request的话,还在微信小程序环境。二者不通用cookies。
6.现在的小程序规范要求不能强行注册,只能引导注册,所以需要把util.login从app.js里面移出来,放到登录按钮里面。
…跨越千山万水,终于迈过了微信这道坎,望天下码农不再填坑。
- 感谢@zhennann大神给力大作cabloy !
- 感谢eggjs, koa等框架开发者!