V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
edison111cry
V2EX  ›  问与答

在后台管理系统里显示微信用户头像的问题

  •  
  •   edison111cry · 2018-02-28 09:45:09 +08:00 · 3168 次点击
    这是一个创建于 2490 天前的主题,其中的信息可能已经有所发展或是发生改变。

    微信用户第一次访问 H5 页面时会把用户的 openid 以及相关的昵称,用户头像存储到数据库里。 管理后台显示用户信息时直接从数据库里读取出来,但是时间长了微信更换头像了,存的旧的头像链接便失效了,想请教一下大家怎么处理后台显示微信用户信息的问题? (如果在后台显示时每次都通过 openid 调用微信的接口获取到到信息来展示,感觉上又没有这个必要。大家都是怎么处理的?)

    6 条回复    2018-02-28 12:30:26 +08:00
    zcdll
        1
    zcdll  
       2018-02-28 10:08:10 +08:00
    如果用户修改了头像,并不是马上失效的,而且有的时候貌似这个时间还挺长。

    你可以试试,1 - 把获取到的头像自己保存一份,用自己的链接。2 - 定期更新头像。
    odirus
        2
    odirus  
       2018-02-28 10:12:25 +08:00
    我们一般首次登陆时 scope = snsapi_userinfo,获取到 unionid, openid, 头像等,然后记录数据库

    下次登陆时 scope = snsapi_base 获取到 openid 就可以用来登录了

    ---------------------------------------------------------------------------------------

    你说的这种情况,完全可以设置一个刷新微信用户信息的时间间隔,超过一定时间再访问网页时,使用 scope = snsapi_userinfo 方式进行重定向授权,这样就可以解决用户信息不同步的问题了
    edison111cry
        3
    edison111cry  
    OP
       2018-02-28 10:17:12 +08:00
    @zcdll 嗯,你的意思是在后台(比如说每隔两周)把所有的用户头像都更新一遍 这样吗?因为我看微信文档也没有相关的用户更新头像回调之类的说明
    whypool
        4
    whypool  
       2018-02-28 10:23:22 +08:00
    有个 token,一个月有效期,用这个可以刷新用户信息
    和基础的 accesstoken 不一样
    zcdll
        5
    zcdll  
       2018-02-28 10:31:27 +08:00
    @edison111cry 嗯,感觉你的问题主要是,怎么分辨用户是否更新了头像。要是每个对比的话也需要时间,我之前做的对头像的依赖不大,获取到了以后就不更新了。看你的需求吧,如果有必要,就得想办法更新数据库了。
    yimity
        6
    yimity  
       2018-02-28 12:30:26 +08:00
    用户每次新访问网页的时候用 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + appid + '&secret=' + secret 和 https://api.weixin.qq.com/cgi-bin/user/info?access_token=' + accessToken + '&openid=' + openid + '&lang=zh_CN=' 这个接口去获取最新的用户信息。不需要用户参与。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:52 · PVG 07:52 · LAX 15:52 · JFK 18:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.