V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fengchang
V2EX  ›  程序员

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

  •  
  •   fengchang · 2015-02-25 16:51:22 +08:00 · 7255 次点击
    这是一个创建于 3348 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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


    一般的需求到这就差不多了,另外如 @iamjs 所说的,别把 openid 之类的敏感信息放在 Cookie。
    dangyuluo
        10
    dangyuluo  
       2015-02-25 18:40:53 +08:00
    @special 你好啊,我刚才测试了下tower,感觉非常不错。 注册后会生成一张二维码,我扫描关注后不需要任何操作就可以在tower微信公众主页内进行操作。二维码是使用了微信的临时二维码生成的么?然后我扫描带参数的二维码后,在subscribe事件发生时便将我的openid与tower项目绑定。是这样么?
    special
        11
    special  
       2015-02-25 19:00:34 +08:00
    @dangyuluo 厉害,就是这样的,利用好微信官方的接口就可以实现了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   997 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:43 · PVG 06:43 · LAX 15:43 · JFK 18:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.