微信授权登录开发流程|微信小程序之登录态的探索

2018-11-20 14:28:37 微信支付开发 1388 views 微信支付开发
[导读]:本文(《微信小程序之登录态的探索》)由来自昆明的客户投稿,并经由本站(河池微信接口)结合主题:微信授权登录开发流程,收集整理了众多资料而成。主要记述了微信小程序,微信开发,开发流程,数据校验等方面的信息。相信从本文您一定可以获得自己所需要的!

通常的登录都是通过一个表单,这很正常,但如果在小程序里你也这么做那就有点不可思议了,微信的一键登录对用户体验有多好你难道不知道?最主要——你要利用微信的生态必须需要用微信的登录,以获取相关信息来和微信交互。用户在小程序、小游戏中需要点击组件后,才可以触发登录授权弹窗、授权自己的昵称头像等数据。友情提示一下:wx.login并不需要点击组件,需要的是wx.getUserInfo,但通常我们都会用到UnionID、encryptedData、iv等信息完成完整的登录流程。

怎么在需要的页面都能弹出登录按钮,应该很多人都能想到:抽离出组件,那怎么保证在需要的页面都有这个组件呢?错杀一千也不能放过一个!把登录组件集成到共用的父组件,然后在每个页面都使用。我也建议这么做,因为这个共用的父组件其实又很多用处,例如iPhoneX适配等,在哪里校验是否需要鉴权。

图片

官方的这张图已经做了很详尽的说明,但是看到session_key了吗?

会话密钥 session_key 有效性

开发者如果遇到因为 session_key 不正确而校验签名失败或解密失败,请关注下面几个与 session_key 有关的注意事项。

wx.login 调用时,用户的 session_key 可能会被更新而致使旧 session_key 失效(刷新机制存在最短周期,如果同一个用户短时间内多次调用 wx.login,并非每次调用都导致 session_key 刷新)。开发者应该在明确需要重新登录时才调用 wx.login,及时通过 code2Session 接口更新服务器存储的 session_key。

微信不会把 session_key 的有效期告知开发者。我们会根据用户使用小程序的行为对 session_key 进行续期。用户越频繁使用小程序,session_key 有效期越长。

开发者在 session_key 失效时,可以通过重新执行登录流程获取有效的 session_key。使用接口 wx.checkSession可以校验 session_key 是否有效,从而避免小程序反复执行登录流程。

当开发者在实现自定义登录态时,可以考虑以 session_key 有效期作为自身登录态有效期,也可以实现自定义的时效性策略。

怎么保证session_key的有效性

  • 要保证调用接口时后端session_key不失效,只能在每次调用前先使用wx.checkSession检查是否有效

  • 实践中也发现wx.checkSeesion非常耗时,大约200ms,所以也不能每次接口调用前都使用wx.checkSession检查是否有效

  • 同时要注意前端不能随便重新执行wx.login,因为可能导致正在进行的其它后端任务session_key失效

微信授权登录开发流程|微信小程序之登录态的探索

得知:在使用小程序期间session_key是不会失效的。1、在每个请求前去校验有效性;2、将校验有效性的结果存储起来;3、通过async/await和刚才存储起来的结果来保证不过多调用wx.checkSession。

因为storage是永久的存储,而session_key的有效期却只是在使用小程序期间,所以你需要在小程序结束后手动重置该状态以重新校验其有效性,那是不是在app的onUnload里重置呢?不是!开发过小程序的应该都知道,那就是结束使用小程序的方式太多,不能保证每种方式都会触发onUnload,例如用户直接销毁了微信进程那用什么呢?直接用内存啊,借助内存的自动管理来智能管理,所以最终代码应该是这样的。

微信授权登录开发流程|微信小程序之登录态的探索

怎么校验完整的认证体系:校验微信端的session_key略有麻烦,但不应该把它抛给服务端;服务端不能直接校验session_key的有效性而是通过调用接口发现错误了才知道失效了,这是被动的;服务端需要同时维护两个session。而放在前端我们只需要校验两个session的有效性即可,任何一个失效就重新登录,这是积极主动有效的操作,应该被提倡。

基本上梳理的差不多了,就差弹登录按钮了,这个简单,调用刚才封装的组件的方法就行了嘛,bingo,可是,点完允许后呢?怎么继续用户的操作呢?怎么能让用户的体验不被打断呢?先回放下刚才reLogin的代码

通过回调的方式当用户同意授权了就继续余下的逻辑,如果被拒绝了,则安利他,再拒绝就终止操作,下次需要授权也会继续弹出授权。

拓展阅读

【微信授权登录开发流程图】微信小程序开发(1):小程序的执行流程是怎么样的?:http://www.hechi315.cn/develop/57.html

【微信商城登陆】小天鹅登陆微信互联商城,让洗衣更便捷:http://www.hechi315.cn/zixun/18.html

【微信怎么解除授权登录】晒账单被授权 支付宝微信解绑授权你真懂?:http://www.hechi315.cn/zixun/49.html

[取消微信所有授权登录]微信登录的授权泄露你的隐私,教你怎么解除:http://www.hechi315.cn/zixun/47.html

2018微信最新的版本|2018微信防封号攻略最新版:http://www.hechi315.cn/zixun/43.html

【微信授权登录怎么取消】一步查询你微信授权登录过哪些应用,没用的赶紧取消授权:http://www.hechi315.cn/zixun/42.html

微信授权登录 如何取消app登录时的微信授权绑定?:http://www.hechi315.cn/zixun/41.html

怎么注册微信公众号 微信公众号需要注册商标吗?:http://www.hechi315.cn/zixun/16.html

相关问答

问:个人网站微信授权登录功能怎么开发

答:这个在nicebox上可以设置,直接扫一扫就能对接到网站。


问:java 微信二次开发网页授权第一步怎么获取code

答:楼主您好
code是微信那边跳转到页面自动会带的参数
拿我们的例子,定义一个
function getQueryString(name){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
然后直接在页面上
var code = getQueryString('code');这样获取即可


问:个人网站可以申请微信授权登录吗?

答:个人网站不可以申请微信授权登录,在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发―接口权限―网页服务―网页帐号―网页授权获取用户基本信息”的配置选项中,修改授权回调域名。


问:仅仅是使用微信第三方登录的功能,需要进行开发者资质认证吗

答:不需要进行开发者资质认证;
微信公众平台帐号和微信开放平台账号是不同的,
微信第三方登陆,需要备案过的网站,在微信的开放平台申请接入,
微信第三方接口申请的地址是https://open.weixin.qq.com/,
泰牛程序员的微信课程里面讲的有这些


问:微信web开发者工具如何进行调试微信网页授权?

答:具体操作步骤为:
开发者可以在调试器中点击“登录”,使用手机微信扫码登录,从而使用真实的用户身份来开发和调试微信网页授权。请确认手机登录页,绑定的公众号为“微信 web 开发者工具”,如下图所示:
为了保证开发者身份信息的安全,对于希望调试的公众号,我们要求开发者微信号与之建立绑定关系。具体操作为:公众号登录管理后台,启用开发者中心,在开发者工具――web 开发者工具页面,向开发者微信号发送绑定邀请。开发者在手机微信上接受邀请,即可完成绑定。每个公众号最多可同时绑定10个开发者微信号。
完成登录和绑定后,开发者就可以开始调试微信网页授权了:
非静默授权的 URL: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx841a97238d9e17b2&redirect_uri=http://cps.dianping.com/weiXinRedirect&response_type=code&scope=snsapi_userinfo&state=type%3Dquan%2Curl%3Dhttp%3A%2F%2Fmm.dianping.com%2Fweixin%2Faccount%2Fhome
点击“确认登录”即可带着用户信息跳转到第三方页面,很方便的进行后续的开发和调试。
静默授权的 URL: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx841a97238d9e17b2&redirect_uri=http://cps.dianping.com/weiXinRedirect&response_type=code&scope=snsapi_base&state=type%3Dquan%2Curl%3Dhttp%3A%2F%2Fmm.dianping.com%2Fweixin%2Faccount%2Fhome
在微信 web 开发者工具中打开该 URL 则会自动跳转到第三方页面。


发表评论

狗爷

只需要通过接口的审核就是了

2018-12-07 21:55:25
冬日暖阳

1:需要通过接口的审核就是了。
2:需要企业才能有这种资质的 那就得去认证开发者资质了。

2018-11-25 13:51:22
蓝蓝的风

可以联系微信公司 问下是不是一定得公司 才能申请授权

2018-11-21 08:14:18
王昆鹏

纯个人网站是不能开通的哦,只有公司才可以的

2018-11-20 23:44:34

发表评论:

在线客服