如何实现绑定微信账号后,在微信内访问 WebApp 免登录

2015-02-25 16:51:22 +08:00
 fengchang

例如在tower.im的微信号里进入tower的webapp是不用再次登录的。但是看url里并没有写token。那是通过cookie或者localStorage存储的吗?还是微信提供了在公众号内可以自定义http header的功能?

7303 次点击
所在节点    程序员
11 条回复
66beta
2015-02-25 16:55:52 +08:00
微信API可以获取用户微信ID啊,第一次注册关联下,下回看到微信ID就知道是谁了
hackwjfz
2015-02-25 17:03:16 +08:00
微信的Oauth接口可以获得用户的openid,第一次关联一下openid和账号。
Lenbo
2015-02-25 17:09:58 +08:00
在网页内,可以调用微信的api获取用户openid,第一次关联,以后再进入页面检查openid,如果是已注册用户就不用登录了。
fengchang
2015-02-25 17:50:57 +08:00
@Lenbo js SDK是吗,明白了
foccy
2015-02-25 17:54:57 +08:00
iamjs
2015-02-25 17:57:21 +08:00
@fengchang 拿到openid即可。
顺便提醒下,微信浏览器内的 cookie session localstorage等都是靠不住的。
可以用,但是需要做好随时失效的准备。再去读一下相关信息
qiayue
2015-02-25 18:04:48 +08:00
做微信相关的,最好就是把所有的微信开发者文档通读一遍,每个接口测试一遍,看看需要传什么参数,返回的数据格式之类的
http://mp.weixin.qq.com/wiki/home/index.html

这样子的好处是,下次你有任何需求,都可以快速找到相应的 API
xuewl
2015-02-25 18:22:05 +08:00
微信把链接发过去的时候,我一般都把openid发过去,用户通过浏览器访问的时候,直接替TA强制登录。
special
2015-02-25 18:27:14 +08:00
偶是前 tower 工程师 && 负责微信这一块的,简单说下实现思路:

1. 如 @hackwjfz 所说通过 OAuth 接口获取 openid,并在一个表里将用户和 openid 绑定起来;
2. 下次登录在数据表匹配 openid,找到对应用户,登录之;
2. Cookie 保持登录状态;


一般的需求到这就差不多了,另外如 @iamjs 所说的,别把 openid 之类的敏感信息放在 Cookie。
dangyuluo
2015-02-25 18:40:53 +08:00
@special 你好啊,我刚才测试了下tower,感觉非常不错。 注册后会生成一张二维码,我扫描关注后不需要任何操作就可以在tower微信公众主页内进行操作。二维码是使用了微信的临时二维码生成的么?然后我扫描带参数的二维码后,在subscribe事件发生时便将我的openid与tower项目绑定。是这样么?
special
2015-02-25 19:00:34 +08:00
@dangyuluo 厉害,就是这样的,利用好微信官方的接口就可以实现了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/172720

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX