微信公众号的localStorage的大坑

业务流程是:工厂端分享一个邀请合作的二维码,商户这边用手机扫一扫后,关注微信公众号(已关注的老用户自动进入公众号)然后进入到公众号在面板上收到消息,合作邀请(图文字有点不对,请忽略!)

接下来,在点击这个模板消息进入页面的时候需要判断一件事,当前的用户中心是否登陆了账号。

第一直觉是直接去根据localStorage判断用户有没登陆。但是其实是拿不到的,通过面板的模板消息点击进入页面拿到的整个localStorage是{ }。而账号确确实实是登陆了的呀。

那么就说明这是两套体系,模板消息进入的页面与菜单跳转进入的页面不是共通的。上微信公众平台看了下

首先我们把微信内置的第三方网页看成是在整个浏览器环境下的想法是错误的,微信这个算不上浏览器,它是用chrome改造做的一套WKwebView,概念上类似是一套组建。百度上也有很多人吐槽这个问题,cookie和session都解决。

我的解决方法是在登陆账号的时候设置对应的cookie值,有效时间跟令牌或者token时间大致相同,最好是少一天。这样在外面模板消息点击进入页面时可以通过cookie来判断有没有登陆。

 

再提一个问题:若是本来没有登陆的情况下,点击模板消息的合作邀请会跳转进入合作邀请的页面,但是我判断它当前未登陆,所以就跳转到登陆页面去,(这个流程需要在localStorage中设置标识字段),当用户登陆后再跳转回合作邀请页面,然后确认合作。

 

这样一套流程走下来是没问题,但当用户第二次打开微信当然是点击用户中心菜单进去吧,这个时候尴尬了,因为之前的登陆操作的入口是模板消息那边进去的,前面提过了,两套体系不同,所以点击用户中心菜单进去的时候local根本是空的。

 

目前这个问题还没走下去,鉴于上门提到的cookie好像是共用的,所以暂时是想着用cookie去尝试着做。

 

用cookie总感觉不是很靠谱,希望大家多多指点一下更好的方法或者意见!

 

 

 

posted @ 2018-03-24 16:19  萝卜爱吃青菜  阅读(21821)  评论(3编辑  收藏  举报