tencentyun / wafer2-quickstart

Wafer2 腾讯云一站式小程序解决方案
https://cloud.tencent.com/
407 stars 90 forks source link

关于微信登录接口切换,Wafer2 SDK 及 Demo 更新公告 #10

Closed jas0ncn closed 6 years ago

jas0ncn commented 6 years ago

首先,感谢大家一直以来对 Wafer2 的支持,我们也都有关注 Github 上各位的 Issue,由于工作繁忙,有不及时回复之处尽请谅解!

本公告主要对微信前不久调整登录接口后,Wafer2 的更新进行说明。需要注意的是,微信的登录接口更新与腾讯云无关,登录接口反馈的相关问题请至微信开发者社区

微信公告:https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=&docid=0000a26e1aca6012e896a517556c01

根据微信公告,wx.getUserInfo 接口将不再弹窗,而改用 <button>。目前 Wafer2 的 Demo 已经切换,以下主要对 Wafer2 SDK 的实现进行说明。

Wafer2 SDK 的授权登录模式改为:前端 <button> 弹出登录框,用户点击授权之后,SDK 调用 wx.loginwx.getUserInfo 获取用户信息,并解密,存储数据库。

微信的 wx.getUserInfo 返回了包含加密信息的用户数据,我们需要使用 session_key 进行解密,而 session_key 需要使用 wx.login 接口调用。由于使用 <button> 点击事件中的 userinfo 是在 wx.login 获取的 code 之前,后面获取的 code 可能会导致解密失败。所以 SDK 内部统一重新调用 wx.getUserInfo 重新获取了一次用户信息。(https://github.com/tencentyun/wafer2-client-sdk/blob/master/lib/login.js#L63

此次调整新增一个功能。考虑到用户可能此前登录过,实际上通过 openid 就能查询到用户,所以此次新增了一个 loginWithCode 的接口,本接口内部只调用 wx.login 获取了 code,后端 SDK 使用 code 换取的 openid 查询数据库得到用户信息,并更新登录态。调整之后,request 模块将全部更新使用 loginWithCode

除此以外,Demo 也删除了使用 wx.checkSession 判断登录态的方式,由于登录态是后端自行颁发,所以无法使用微信的接口判断登录态。

注意 2.0 版本以上的 Client SDK 需配合 1.4.x 以上版本的 Node.js SDK 或者 2.2.x 以上版本的 PHP SDK。

此次调整给大家带来不便敬请谅解!关于登录模块调整的任何问题可以在下面留言。

yuzifu commented 6 years ago

@jas0ncn 文档还未更新

jas0ncn commented 6 years ago

@yuzifu 您说的是腾讯云官网的文档吗?

yuzifu commented 6 years ago

https://github.com/tencentyun/wafer2-client-sdk/blob/master/README.md

jas0ncn commented 6 years ago

@yuzifu 已经更新了啊

yuzifu commented 6 years ago

由于微信的 wx.getUserInfo 不再弹窗授权,得修改为 button 弹窗获取用户信息。为此我们提供了一个新的 API:qcloud.requestLogin,此函数接受了 code, encryptedData, iv 以向后台提供用户信息,具体示例如下:

qcloud.requestLogin已经改回qcloud.login了,且对于用户来来,不需要自己提供code, encryptedData, iv参数。

jas0ncn commented 6 years ago

@yuzifu 已经更新 README 链接到此,感谢提醒!

HongqingCao commented 6 years ago

添加了button弹框授权之后,doLogin()方法没有反馈 util.showSuccess('登录成功')或者util.showModel('登录错误', err.message)信息啊,里面去打印session里面的内容也没有执行,这是为什么啥。

jas0ncn commented 6 years ago

@HongqingCao https://github.com/tencentyun/wafer2-client-sdk#%E7%99%BB%E5%BD%95

chenyurong commented 6 years ago

按官方的工具指引弄的DEMO竟然登陆失败,虽说是有登陆变更,但是这最简单的入门demo应该好好弄好啊。 如果腾讯对开发者能对产品一样用心,就好了。 这么大公司。

linrx1511 commented 6 years ago

登录和获取用户信息的逻辑好像根本没有分开啊!login还是需要用户授权啊,能不能不用用户授权完成登录?我根本不需要用户的信息

jas0ncn commented 5 years ago

@linrx1511 不需要用户授权的话登录的逻辑十分简单,没有比较实用 SDK 再次封装,直接调用 wx.login 接口即可~

linrx1511 commented 5 years ago

@jas0ncn 不是很明白,那还要用wafer2吗,怎么维护登录态呢?

jas0ncn commented 5 years ago

@linrx1511 这种场景不是很适合使用 wafer2 哈

ruanye commented 5 years ago

demo的登录一直是错误的 改改哪里呢

LuckM-dj commented 5 years ago

这个上传图片的功能怎么报错了呢?