最新消息:20181230 VPS服务器已从Linode换到腾讯云香港,主题仍用朋友推荐的大前端D8

[基本解决]尝试去搞清楚微信网页授权后如何保持用户登录状态

WeiXin crifan 1424浏览 0评论

之前已经:

[已解决]微信授权登陆后获取用户信息后用Python解码

已经可以微信网页授权了

可以获取用户基本信息了

现在想要去搞清楚:

微信公众号 如何保持登录

微信公众号开发,如何使用户保持登录状态 – 云贤力的回答 – SegmentFault

-》获取了openid,就是认为已经登录了?

“方法1:将微信号认证一下,使用OAuth接口,每次进入之前通过接口获取到用户的openid,然后再从你的数据库去读取关系,写入用户登录状态。

方法2:用户点击菜单或者发送关键词是可以获取到用户的openid的,此时返回一个链接或图文消息,用户点击之后用get方式获取到openid,然后再从你的数据库去读取关系,写入用户登录状态。”

javascript – 微信公众号开发,如何使用户保持登录状态 – SegmentFault

用户将openid与业务帐号绑定一次,如何实现用户一直处于登录状态?更换手机后?

  • 方法1:将微信号认证一下,使用OAuth接口,每次进入之前通过接口获取到用户的openid,然后再从你的数据库去读取关系,写入用户登录状态。
  • 方法2:用户点击菜单或者发送关键词是可以获取到用户的openid的,此时返回一个链接或图文消息,用户点击之后用get方式获取到openid,然后再从你的数据库去读取关系,写入用户登录状态。

商业产品正式使用推荐方法1。

个人做着玩玩的话推荐方法2。

用于网页授权用户信息的access_token是怎么缓存和维护的?存储在seesion吗?

用于网页授权用户信息的access_token是必须要进行缓存的,这个每日有接口频率限制,所以你必须缓存这个。

存在Memcache或redis等缓存服务,或者……你存到某个文件也行。

session一般是用来做用户会话,放到这里不保证可用,或者说这么做很奇怪。其他朋友补充下吧。

微信中session会话什么时候会失效?(比如PC端关闭浏览器)

微信的session和PC没关系啊。。

session什么时候过期这个说不来,和你服务器设置和微信自己都有关系吧我觉得。

cookie的话微信有一种很奇怪的过期方式,在很久以前的旧版本里很无厘头,经常是关了窗口就关了。

第1个问题:openid与业务账号绑定,这个和用户是否一直处理登录状态有什么关联吗?openid账号与每个微信公众号是唯一对应关系的,哪怕你取消关注后,再次关注,这个用户的微信号与你的公众号之间的openid也是不变的。

第2个问题:access_token有很多种方式可以缓存和维护,我通常会优先使用memcache(例如sinaapp开发,为key设置一个过期时间,小于微信的7200),或是xml文件,甚至有些网站会使用数据库。

第3个问题:微信公众号接口是无状态的会话,不存在session状态。如果是指自己开发的网站在微信中打开的session,失效就是你关闭网页时。

但这种情况会因为你手机对微信驻留后台的允许或禁止影响,例如你本来未关闭网页,但是你将微信窗口缩到后台,结果被安全软件把进程清理了,这时候也会失效。

其实楼主是想问用户绑定账号以后,让用户一直处于登录状态。

这里好像没有好的办法的。会话是无状态的,如果想让用户感觉着是一直登录状态,中间还得于微信系统进行一次交互才可以,在自定义菜单上可以通过自动回复关键字来实现这一点,其它没有找到好的解决办法,不交互你是根本无法知道用户是谁的

微信登录(所有的第三方登录)都不存在登录状态,获取用户信息都是要通过接口传递openid。(具体可以看看auth2.0)。

access_token 要保存到数据库,而不是session。可以用refresh_token 来刷新access_token(授权成功只会会同时给access_token 和refresh_token)。

你先需要理清楚登录的流程。

[总结]

目前的考虑:

好像access_token,是需要保存到数据库的,总之是要有效维护才可以

并且要注意:

网页授权后的access_token和全局的access_token是不一样的。

转载请注明:在路上 » [基本解决]尝试去搞清楚微信网页授权后如何保持用户登录状态

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
64 queries in 0.079 seconds, using 9.45MB memory