收藏
回答

登录流程有点不清楚?

微信正常的登录流程,应该是点wx.login() 获得code,提交到我的服务器(http的不是https的)一个方法里,我根据自己的appid,密钥,cod 组装向微信发一个请求,返回来只是openid,sessionkey,还有个过期时间,没有拿到unnionid.不知道是不是因为我的服务请求是用的HTTP? 然后我就在调用wx.login的方法里把 code,加密数据,iv等一起提交上去。然后把加密数据解密就能得到unionid,但是我发现不是每次都能解密成功,也不知道是什么原因? 另外还有点逻辑上的不清晰,希望大神能帮忙理一下。我打算后台是建一个用户表,一个微信用户表,先检查微信用户表unnionid是否存在,如果不存在则新增一条,然后自动创建一个用户数据把微信用户表id作为用户表的关联。创建完用户数据后,生成一个guid 作为key,用户数据对象作为value暂时先存在静态字典里(这里暂时没有考虑过期的问题)。然后 把这个key返给前端,前端收到这个KEY后保存到storage e里,然后下面每次去取数据都带上这个key到后台拿数据,后台再根据KEY取用户,返回对应用户的数据给前端。 这个套路不知道有没有问题 吧? 希望大神们能解答一下。如果要有个过期时间问题,微信的返回的那个session_key这个字段不知道能起来什么作用? 我应该怎么做?


回答关注问题邀请回答
收藏

3 个回答

  • 锐鲨科技
    锐鲨科技
    2019-08-28

    1、sessionKey 是服务端用来向微信解密开放数据用的(用户信息、手机号、地址等等);

    2、sessionKey 默认有效期一般是 3 天

    3、尽量根据文档要求的姿势来做,否则容易出现问题,多在本地测试

    下面这个是我根据自己的理解梳理出来的流程图,供参考:


    相关资料:


    2019-08-28
    赞同 1
    回复
  • 全赖有你
    全赖有你
    2019-08-28

    你好,我第一次写,感觉对登陆流程清楚了,但代码写哪里还有时机对不对这个还没搞懂。想请教一下。新建一个项目时,app.js里有写了wx.login() 上面说用这个code去获取sessionkey,openid. 我调试看了这个wx.login()是不管理你登不登它 每次都会调用,都会生成新的code. 然后app.js里还有个appsetting 方法,在授过权登录后,我点ctrl+s 后重新进来,我看他会执行这里面的。

    if (res.authSetting['scope.userInfo']) {

    // 可以将 res 发送给后台解码出 unionId 那官方的提示说,那每次都要执行app.js 里wx.login里去写wx.request({url:'我的服务器'},data:{code=code}) 去拿code换session_key,openid? 但这时是拿不到用户的信息对吧? 官方也说了将res发送给后能解码,unionid. 这样我就不知道这个代码该怎么写了,后台又该怎么去写了!我自己app.js里wx.login() 给删了,再登 陆页封装了一个方法Login, 在登陆按扭绑定这个方法,然后在点按钮时就把code,加密数据,iv等一起传上去了,后然返回一个KEY给前端保存,前端就用这个key去交互,有点纠结。 你能帮我写个前端,后端的伪代码吗?让我看看,你们是怎么做的?


      


    2019-08-28
    赞同
    回复
  • 铭锋科技
    铭锋科技
    2019-08-28

    套路没问题


    2019-08-28
    赞同
    回复
登录 后发表内容
问题标签