Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
jas0ncn opened this issue Jun 11, 2018 · 15 comments
Closed

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

jas0ncn opened this issue Jun 11, 2018 · 15 comments

Comments

@jas0ncn
Copy link
Contributor

jas0ncn commented Jun 11, 2018

首先,感谢大家一直以来对 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
Copy link

yuzifu commented Jun 13, 2018

@jas0ncn 文档还未更新

@jas0ncn
Copy link
Contributor Author

jas0ncn commented Jun 17, 2018

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

@yuzifu
Copy link

yuzifu commented Jun 19, 2018

@jas0ncn
Copy link
Contributor Author

jas0ncn commented Jun 19, 2018

@yuzifu 已经更新了啊

@yuzifu
Copy link

yuzifu commented Jun 19, 2018

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

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

@jas0ncn
Copy link
Contributor Author

jas0ncn commented Jun 19, 2018

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

@jas0ncn jas0ncn closed this as completed Jun 19, 2018
@HongqingCao
Copy link

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

@jas0ncn
Copy link
Contributor Author

jas0ncn commented Jun 21, 2018

@chenyurong
Copy link

chenyurong commented Jul 6, 2018

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

@linrx1511
Copy link

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

@jas0ncn
Copy link
Contributor Author

jas0ncn commented Sep 14, 2018

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

@linrx1511
Copy link

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

@jas0ncn
Copy link
Contributor Author

jas0ncn commented Sep 16, 2018

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

@ruanye
Copy link

ruanye commented Dec 19, 2018

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

@LuckM-dj
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants