微信扫码登录及其拉起小程序汇总
2021-06-09 本文已影响0人
爱你为你做饭
- 微信扫码登录
1.1. 开发前准备工作
* 微信开放平台申请用户并认证用户实体(企业用户)。
* 微信开放平台注册应用,并绑定到对应的实体上,微信审核比较细致,审核周期比较长,建议开发前提前申请。
* 微信公众平台申请小程序,特别注意是微信公众平台不是开发平台,还有貌似公众平台是收费的。
1.2. 获取微信登录二维码
* 获取accesstoken,需要注意的是微信的accesstoken有效期是2个小时,所以需要客户端或者服务端缓存并实时更新,提供了刷新token接口或者重新调用accesstoken接口刷新token和有效期
* 通过上面accesstoken换取获取登录二维码的ticket,ticket和accesstoken一样同样存在有效期,有效期2个小时,客户端或者服务端缓存失效后重新获取
* 下载微信的sdk,使用api(DiffDevOAuthFactory.getDiffDevOAuth().auth)获取对应的二维码,需要注意的是,api调用对象通过工厂模式获取,文档并没有提供,第二个是获取二维码的回调和扫码授权后的回调都是同一个回调api,具体回调方法可以参考文档,oAuthErrCode的状态:-1:获取二维码失败,-4:用户拒绝授权,0:用户授权成功,其他错误码同样是用户扫码后的响应状态。
1.3. 用户扫描流程
* 二维码获取到填充到页面后,用户微信扫码会在微信弹出授权页面,用户授权后会在上面的回调中将授权code回调给app,使用此code可以下面换取用户的userinfo信息等。
1.4. 通过扫描后的authCode换取openid和用户信息
* 文档提供接口利用上面获取的code和accesstoken换取用户openid,获取openid的同时返回了对应的accesstoken和referencetoken此时accesstoken若在有效期内是同一个,但是返回的有效期是续期后的有效期,所以客户端可以更新有效期,通常有效期是2小时,referencetoken和上面的referencetoken一致,逻辑一致。
*获取到openid后通过openid和accesstoken可以获取用户的具体信息,用户名头像等用户个人信息,还有就是用户的微信平台唯一码包括app,公众号,小程序等。
1.5. 同步openid到服务器生成自己app用户
* 将上面userinfo同步到服务器生成用户并绑定对应的用户信息即可。 - 微信拉起小程序
- 微信提供了对应的api用户app拉起小程序和小程序回到app及其两者之间通信。
- app和小程序间通信目前仅用于同一个终端,不能跨终端,跨终端可以借助于小程序码,微信支持每一个页面生成小程序码并支持参数传递。
- app拉起小程序需要指定app的id及其小程序的原始id(原始id)可以在公众平台找到,提供跳转的路径,不提供会直接跳转到小程序的首页。
- app拉起小程序可以通过参数指定拉起小程序的版本,正式版,测试版,预览版。
- 小程序码生成需要注意的点:
- 生成小程序码需要的accesstoken和app无关需要通过小程序的appid和appsec通过接口生成
- 获取小程序码接口是post接口,但是上面的accesstoken不能作为参数post传递而是get方式放到接口url上
- post参数不能有accesstoken,即时get方式传递了对应参数
- scene传递拉起页面对应的参数,需要注意小程序中获取参数的方式和普通get方式不同,不知道微信为何脑残似的弄两中方式。
- scene可传递参数长度有限制,具体限制可以参考文档,要么参数有限制要么生成小程序码的接口调用次数有限制。
- 扫码登录二维码的有效期问题及其解决办法
- 扫码登录二维码有效期通常是4分钟即4分钟内扫描有效且扫描后改二维码失效
- 获取登录二维码的接口api成功后再次调用微信服务器会阻塞接口待4分钟后响应超时,所以此接口api4分钟内不能持续调用。
- 解决方法:客户端或者app服务端做缓存处理及有效期处理,4分钟内持续使用图片(扫码后要及时清空当前图片)
- 小吐槽一下微信的文档,哥哥们咱以后写明白多好,得让自己去测试。
- 重要知识点汇总
- app应用的微信审核需要提供网站(可以使官网也可以应急穿的网页)对app应用进行介绍,app应用审核还需要提供注册登录流程图(流程图可以随便)但是介绍页面提供对应的注册登录介绍等。
- 获取二维码和用户个人信息都需要用到accesstoken,并且accesstoken具有有效期,还有referencetoken可以用来刷新accesstoken,刷新后的token具有更长的有效期。
- 获取二维码并不是直接使用accesstoken,而是通过accesstoken换取sdkticket使用sdkticket获取对应的登录二维码。
- 获取二维码的api需要参数签名,具体的签名方法和常见接口签名类似且文档提供了对应的参数方法。
- 接口scope参数解析:当前接口申请功能范围,基本登录和用户信息两种场景,即snsapi_base和snsapi_userinfo两种具体参考登录文档。
- 用户扫码授权后会回调接口三次,所以需要用户自己在逻辑中控制避免频繁调用接口。
- 获取用户的openid会同时返回accesstoken和referencetoken可以用来刷新客户端缓存的token。
- 用户信息会实时更新所以客户端需要实时同步用户信息进而保证用户信息和微信同步。
- app拉起小程序特别注意终端,同一个终端可以拉起,不能跨终端即平板电视app无法拉起用户手机的小程序。
- app拉起小程序特别注意参数,对应的参数在文档中都有提示
- 微信和app的通信签名等常规仅作记录
- 电视/pc/智能机等设备最优化的用户系统(借助于手机的小程序的快捷输入避免上面设备的输入不便)
- 设备提供注册小程序码,用户扫码后进入小程序,将整个注册流程交给小程序去处理。
- 小程序提供微信登录注册及其手机号登录注册两种场景,即小程序校验授权登录,用户授权就使用wxid不授权就使用手机号注册新用户,手机号验证码是必选项授权是绑定手机号不授权是注册手机号需要注意的是手机号唯一同时处理采集信息的业务逻辑
- 设备专注于处理微信扫码登录及其手机号登录
- 个人中心提供信息修改的业务逻辑,两种方式一是单纯设备修改,另一个是通过动态小程序码生成用户对应的小程序码到手机修改信息并重新绑定。
- 微信文档整理
微信工具包及其微信demo下载地址
微信开放平台
微信公众号平台
微信公众平台
微信登录文档
微信扫码登录文档
微信获取用户信息文档
微信拉起小程序文档
微信获取小程序码文档