jas0ncn / szushudong

微信小程序 - 深大的树洞 2.0 - 基于 WePY
GNU General Public License v3.0
301 stars 95 forks source link

目前发现的问题,和改进建议 #8

Closed NullYing closed 7 years ago

NullYing commented 7 years ago

遇到的问题: image 出现这个报错同时,首页list blog刷新后不渲染 image 忽略了错误,变成了警告,不知道有没有影响 改进建议: 1.不同时获取code和用户信息,使用code得到openid,自己服务器返回openid,参考小程序最新登陆流程 image 2.blog暴露openid可能出现安全问题

初学nodejs,望指教,谢谢

NullYing commented 7 years ago

粗略修改的代码仓库,https://github.com/gxgk/GkTreehole 已经实现了部分接口

jas0ncn commented 7 years ago

你这个实现就是官方的流程,但是考虑一个问题。就是你后端需要储存 code,以此来判断用户是否登录,实际上 code 只是用来换取 session_key,session_key 也只是用来换取用户信息,所以拆分成两个请求并没有意义。

另外我看你把 session_id 返回回来,不知道这个 session_id 是不是就是 session_key,如果是的话这是微信方面明确禁止的,会有安全问题。如果不是你还是得存 session_id 和 session_key 的映射关系。我感觉这是一个无用的工作。微信方面并没有规定 session_key 的接口调用限制,所以每次登录调一次是没有什么问题的。我这种方式具体后端 Node.js 实现可以查看:koa-wxsession

另外关于 /blog 暴露 openid,考虑到链路用的 https,而且小程序也暂时没有漏洞。并且所有的 api 拿到了 openid 之后也都无法调用,所以安全问题有待考证。如果 https 被中间人截获,他为什么不直接伪造 session 而还要用 openid 呢?

jas0ncn commented 7 years ago

关于第一个截图报错的问题,是正常的,因为我没有注册 onReachBottom 函数。

jas0ncn commented 7 years ago

刷新之后不渲染,是 wepy 的 bug,这个已经反馈了但是一直没有时间做具体的复现测试并提交 issue,目前可行的办法是结束命令重新执行 wepy build --watch

NullYing commented 7 years ago

session_id是自己生成的用户标识字符串,不是微信返回的

另外我说的连用获取code和获取用户信息,在微信官方说明上有说到 image http://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=&docid=c45683ebfa39ce8fe71def0631fad26b

NullYing commented 7 years ago

因为我们是一个公众号,两个小程序,所以如果有unionid就不需要再授权获取用户信息,单个小程序没影响

jas0ncn commented 7 years ago

这是新版的接口,最近几天才出来的。那时候他并没有明说。而且当时也考虑到会和公众号结合,需要 unionId

jas0ncn commented 7 years ago

如果需要 unionId 我这种结构是最优的。

NullYing commented 7 years ago

就怕他之后审核不给过哈,连用提示用户授权 image

jas0ncn commented 7 years ago

我们已经上线了这个问题不会涉及,如果你考虑这个原因,确实是要修改一下。 另外微信小程序不太适合做这种社交类型的东西,微信这方面限制的太死了,做成网页好一点

NullYing commented 7 years ago

对了, 你说的没有注册是要怎么弄?不影响正常使用?onReachBottom

NullYing commented 7 years ago

解决了,message增加 async onReachBottom () { }