最近一直在负责开发公司的服务号,并且将来还要做成第三方平台。年末先做一波总结!
日常使用的微信服务号点击菜单栏,跳转进入网页中心。
第一步,在公众号的后台可以设置菜单的跳转链接。需要注意的是
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 菜单跳转设置的
redirect_uri可以改成index.html。其他参数不能随意更改。
特殊的几个标志 appId code redirect_uri openId 是用户唯一标志
阐述一下整体的流程是,设置菜单跳转链接以后,点击菜单进来后可以从url中的state字段中获取appID的值,从code字段获取code的值,然后利用这两个字段去后台获取对应的数据,如下
这里忽略注册一词,原来跟成功注册时一致的。需要注意的是code 的问题,code每次点击菜单进来都是唯一的,一个请求携带这个code去后台拿数据,在未返回之前,如果再次用这个code去发送请求,会报错!!!
这个是坑点,code同一时间只能用在一个地方,可以理解为类似于单线程的东西。所以有些按钮需要做按钮控制,以免发生请求冲突报错。
踩坑心得:建议这个获取的过程单独做一个空白页面,可以做个加载跳转的效果,拿到用户数据后存在localStorage后接着就往目标页面跳,这个阶段是不让用户看到的。(试过不做空白页面跳转,但是如果从第二个页面往有滑关闭页面再次回到菜单入口页面时,code就会报错,导致没有任何效果!)
同样的页面,如我的预约,可以是菜单点击进来的,也可以是其他页面跳转过来的,这个时候还是需要空白页面来处理最好了。
值得注意的是,如果是从服务号发送给用户的消息中点击进来的页面,就不用去获取code了因为它没有脱离微信环境本身,后端设置的该消息的点击链接中是自带openId的。
所以可以通过getUrl(openId)来判断是从聊天面板点击进来的还是其他页面跳转过来的。
提示点:开发过程中,如果发布后发现代码没有生效,可能是手机缓存的问题(清缓存),可能是发布的问题(把编译后的文件删除,再重新编译发布)。
菜单变化,需要取消关注公众号后重新关注才可看到新的效果。
总结:其实是从微信环境到第三方环境的一个跳转,但是有很多严格的限制,需要微信或者用户授权。授权方式的话可以采用静默授权。重点:code,appId .比较麻烦的是调试,不好测试,特别是涉及到菜单跳转的,必须上真机才能测试。