原生版APP实现登录注册功能

333 阅读5分钟

登录的实现步骤

1.uni.getUserProfile==> wx.getUserProfile

 ***在开发阶段,可能可以拿到用户的头像和昵称,但是在生产阶段,是100%拿不到的(微信的规定)
success(res){
res.rawData
res.signature
res.encryptedData
 res.iv
 }

***前端需要给后端传递过去这些参数

2.uni.login ==> wx.login

3.前端请求后端接口 : [微信一键登录的接口] 要知道这个用户是否在我们平台注册过

 3.1 发送请求返回code码
 
   需要把uni.login返回的code码传递后后端. 后端会给前端也返回一个code[验证当前登录的用户是否之前注册过: 之前有没有绑定过手机]
 
 1:注册过
  跳转到绑定手机号页面,需要用户绑定手机号
  
2:没有注册过

 跳转到注册页,需要注册( 其实就在我们平台的数据库中存入用户字段,并且拿到用户信息==>后端给前端该用户的token,前端拿到token需要存储起来,为了方便后续展示用户的相关信息 )
 

***后端给前端返回的code码: 200:注册过、60003:没有注册过

4.code码是:60003的情况==》去注册

4.1 调用:注册微信用户的接口

需要传递的参数来自于“uni.getUserProfile” 的success参数

4.2 如果注册成功 ==》 后端也会返回code码为200,就继续走 [5的流程]

5.code码是:200的情况

5.1要把用户的token存储起来 res.data.token

5.2判断用户是否绑定过手机号 res.data.member.mobile 是空的 去绑定

res.data.member.mobile 有手机号

直接提示登录成功==》返回到我的页面

代码

<button @click='wxLogin'>微信登录

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

9.jpg

10.jpg

11.jpg

12.jpg

13.jpg

14.jpg

15.jpg

16.jpg

17.jpg

18.jpg

19.jpg

20.jpg

21.jpg

22.jpg

23.jpg

24.jpg

25.jpg

26.jpg

27.jpg

28.jpg

29.jpg

30.jpg

31.jpg

32.jpg

33.jpg

# 登录 ---绑定手机号流程的逻辑总结

第一步:点击登录按钮获取用户的基本信息

做法 :给登录按钮绑定click点击事件。当用户点击登录按钮后,在事件处理函数中,首先调用uni.getuserprofile方法。获取微信用户的基本信息。 如果调用失败,则调uni.showtoast方法提示用户 您取消了微信小程序登录授权。 如果这个API调用成功,那么,服务器会返回用户的头像和昵称等信息。然后调用uni.Setstoragesync方法将用户信息存储到本地。

第二步: 获取到用户信息之后获取code码

做法: 调用uni.login方法,如果失败,则提示用户您取消了微信小程序登录授权。 如果这个API调用成功,那么服务器会返回一个code码,它是用户登录的凭证。

第三步 : 调用后端提供的用户登录登录接口,从而换取登录成功之后的token字符串。

做法: 调用后台提供的用户登录接口,并把code码传递过去,通过后台返回的状态码,要判断这个用户之前是否注册过? 如果这个用户之前没有注册过,那么就让用户调转到注册页面去注册. 那么,调用后端提供用户注册的接口,并把用户的信息当做参数传递过去,。如果请求失败,则提示用户注册失败。如果请求成功,后台会返回token字符串,然后将token字符串存储到本地. . 然后提示用户登录成功。 接着是判断用户是否绑定过手机号的流程

如果用户之前注册过。 那么,直接将后台返回的token字符串存储到本地。然后提示用户登录成功。 接着是判断用户是否绑定过手机号的流程

第四步: 用户登录成功之后,要判断用户是否绑定过手机号

当用户登录成功之后,通过后台返回的参数来判断用户是否绑定过手机号?如果绑定过,那就直接调用uni.switchTab方法跳转到首页。 如果没有绑定手机号,那就调用uni.showmodal弹出一个窗口,让用户勾选绑定手机号。当用户点击确定按钮后,调用uni.navigateto方法跳转到绑定手机号页面。
用户点击取消按钮,那就不绑定手机号,直接调用uni.removeStoragesync方法,清除用户登录的状态信息。

# 第五步:绑定手机号并登录流程

1.用户点击获取验证码按钮的处理

使用v~model收集用户输入的手机号。 当用户输入手机号后,点击获取验证码按钮. 需要对用户输入的手机号进行正则校验其是否合法。如果不合法,那么就给予错误提示. 然后return出去。
如果校验通过。 发送获取短信验证码的请求,并将手机号当参数传递给后台。后端会发送验证码至用户手机,然后在请求方法中,调用uni.showtoast方法,提示用户验证码发送成功。此时需要对验证码设置一个过期时间,把获取验证码按钮的disabled设置为true变为禁用状态, 使用setInterval定时器设置一个倒计时的效果,把按钮文本内容与倒计时进行拼接显示,判断这个倒计时等于0就清除定时器clearInterval(timer),解除按钮的禁用状态disabled设置为false. 按钮文本恢复为获取验证码,计时变量再设置为60秒. 用户收到验证码后进行输入 (补充:在date中定一个timer等于null 。 然后在请求方法中设置this.timer=SetInterval 。声明一个计时变量time等于60。 在SetInterval里面,判断时间剩余秒数 , 如果time=0 ,那就清除定时器clearinterval(timer)并恢复按钮的点击状态为true。 如果time不等于0,那么 time -- 。 并设设置按钮显示的文本为: 还剩下 time 秒)

如获取验证码请求失败,提示用户短信发送失败

2.用户输入手机号和验证码之后的处理

当用户输入手机号和验证码,点击登录按钮后。给登录按钮绑定点击事件,并添加事件处理函数,在事件处理函数中, 调用uni.showloading展示loading登录效果, 接着调用后台提供的登录接口,将用户输入的手机号和验证码传递给后台,如果请求成功, 调用uni.switchTab方法跳转到首页。 并调用uni.showtoast方法提示用户 绑定手机号成功。如果请求失败,则提示用户绑定手机号失败。