前段时间开发中的一款产品,有小程序和app:小程序直接微信登录,app使用手机号+验证码注册,手机号+验证码/密码登录。

用户使用其中一套账号密码即可正常使用,不强制要求完善另一套账号。为避免同一用户小程序是一个账号,app是另一个账号,就有了两套账号体系相互打通(绑定)的需求。

下边梳理下注册登录及相互绑定的流程。

小程序注册登录

从微信进入小程序,如果数据库中没有这个微信用户,即注册为新用户,然后自动登录。如果已经有这个用户了,也自动登录。

这里为什么是UnionID而不是openid。

openid同一用户同一应用唯一,unionid同一用户同一开放平台所有应用唯一。

如果使用openid,当有多个应用,比如多个小程序,或者小程序和app的微信授权登录,同一个微信用户会有多个openid,如何将其对应到同一个账户就很复杂了。

App注册登录

App注册只设计了手机号+验证码的方式。如果没有这个手机号用户,注册为新用户并登录。如果已经有这个手机号用户,自动登录。

比最基本的注册登录多了一个账号是否禁用的判断。

起初是没有这一层判断的,发放新用户红包(可无条件提现)的时候出现了问题:已经被禁止登陆的手机号,又重新注册了新账号。

所以,列入黑名单的账号,不仅要在登陆环节堵住,在注册环节也得堵住。

微信小程序里,绑定/换绑手机号

换绑过程,需要原绑定手机号+验证码验证后才能进入解绑流程,防止他人恶意绑定。这一步是否有必要,要根据产品的性质而定,如果是金融类产品,牵扯到钱,一定要有。用户更换绑定的手机号,很可能原手机号已经无法接收验证码。所以,如果没有其他的解绑途径,最好这一步是可以跳过的。

app手机登录,绑定微信号

以上是注册登录及绑定账号的流程,其中会涉及到很多细节,理好了再补充。

小程序&app 注册登录、绑定的更多相关文章

  1. 写个小程序01 | 注册微信小程序

    出于兴趣和学习目的,我想自己做一个基于"子弹笔记(Bullet Journal)"的小程序.由于个人开发经验很有限,只在课程作业中写过 web 前端,所以也不知道多久能写出来(逃) ...

  2. Java生鲜电商平台-优惠券功能设计与开发(小程序/APP)

    Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 说明:Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 目录 1.项目背景与需求分析 2.需求目的与功能点列表 3.业务逻辑 ...

  3. 微信小程序中的事件绑定

    前言: 微信小程序中的事件绑定和Vue中的事件绑定其实有很多的相似之处,所以如果有过Vue相关的经验,学起来的话还是比较容易的. js代码: // 页面级的js文件必须调用Page函数来注册页面, / ...

  4. 小程序app.js小结

    小程序app.js app.js import { ApiUrl } from 'utils/apiurl.js'; import { httpReq } from 'utils/http.js'; ...

  5. 微信小程序-APP生命周期与运行机制

    QQ讨论群:785071190 开发微信小程序之前需要先了解微信小程序运行机制以及其生命周期,小程序APP生命周期需要先从app.js这个文件开始. 阅读过"微信小程序-代码构成" ...

  6. 基于uniapp自定义Navbar+Tabbar组件「兼容H5+小程序+App端Nvue」

    uni-app跨端自定义navbar+tabbar组件|沉浸式导航条|仿咸鱼凸起标签栏 在跨端项目开发中,uniapp是个不错的框架.采用vue.js和小程序语法结构,使得入门开发更容易.拥有非常丰富 ...

  7. 微信小程序APP生命周期

    小程序APP生命周期需要先从app.js这个文件开始,App() 必须在 app.js 中调用,必须调用且只能调用一次,app.js中定义了一些应用的生命周期函数 onLaunch----当小程序初始 ...

  8. 微信小程序API~检查登录状态

    wx.checkSession(Object object) 检查登录态是否过期. 通过 wx.login 接口获得的用户登录态拥有一定的时效性.用户越久未使用小程序,用户登录态越有可能失效.反之如果 ...

  9. Authing新功能——小程序扫码登录

    近期,Authing 发布了新功能--小程序扫码登录. 小程序扫码登录指使用Authing小程序身份管家在网页端或其它客户端执行微信登录,目前的SDK仅支持客户端JavaScript.其它语言若想使用 ...

随机推荐

  1. FPGA成神之路

    先占个坑,网上写的都太没有体系了,打算写一个从电路到语法,从软件使用到硬件调试,从IP核调用到时序分析的系列帖子,人就是太懒,想把自己这两年踩的坑分享一下,加油,特种兵

  2. Java学习:线程池

    线程池 线程池概念:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多的资源. 线程池:容器-->集合(ArrayList,Hash ...

  3. thinkPHP中 query()和execute()的区别

    query()执行的是查询(select)的SQL语句. execute()执行的是插入(insert)和修改(update)的SQL语句.execute()方法将返回影响的记录数. 如果在TP中使用 ...

  4. 一张图看懂SharpCamera

    通过下面的图片,可以瞬间看懂整个类库的脉络.

  5. 2019 拉卡拉java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.拉卡拉等公司offer,岗位是Java后端开发,因为发展原因最终选择去了拉卡拉,入职一年时间了,也成为了面试官 ...

  6. Django--模型层进阶

    目录 QuerySet对象 可切片 可迭代 惰性查询 缓存机制 何时查询集不会被缓存? exists()与iterator()方法 exists() iterator() 中介模型 查询优化 表数据 ...

  7. Netty入门系列(1) --使用Netty搭建服务端和客户端

    引言 前面我们介绍了网络一些基本的概念,虽然说这些很难吧,但是至少要做到理解吧.有了之前的基础,我们来正式揭开Netty这神秘的面纱就会简单很多. 服务端 public class PrintServ ...

  8. tomcat添加https服务

    系统环境: centos6.7 jdk-7u79-linux-x64 apache-tomcat-7.0.57 apr-1.5.2 apr-util-1.5.4 一.tomcat安装 自己准备tomc ...

  9. 40、js技巧(持续更新。。。)

    1.深拷贝对象: const a={name:'aaa',age:11} const b=JSON.parse(JSON.stringify(a)) 2.获取数组极值: let list = [1, ...

  10. CSS 案例

    一.滑动门案例 二.小黄人案例 三.圣杯布局&双飞翼布局