uniapp实现小程序登录,微信一键登录,获取token,iv,code,ncryptedData

  1. 首先布局登录按钮(触发登录的一定要是button,button才有获取用户的方法)

    在这里插入图片描述

			 <button
                open-type="getPhoneNumber"
                @click.stop="loginfn"
                @getphonenumber.stop="onGetPhoneNumber"
              >点击微信一键登录</button>

2.写点击button之后的逻辑,,获取iv,code,ncryptedData,调用后端接口进行登录
在这里插入图片描述

 // 用户授权登录
 //首先点击登录按钮的时候获取一下code,保存到data里
	 loginfn(){
 		 wx.login({
   	       success(res) {
  	          that.code = res.code;
  	          return;
	          },
	      });
      }
     //调用button自带的弹窗获取用户信息方法
    async onGetPhoneNumber(val) {
    //此时的val是用户点击了允许还是拒绝
      let that = this;
      if (val.detail.errMsg === "getPhoneNumber:ok") {
      //保存需要的** iv, encryptedData **
        const { iv, encryptedData } = val.detail;
        //调用后台登录的接口,传递参数
        const result = await that.api.getLoginApi({
          loginType: "1",
          iv,
          code: that.code,
          encryptedData,
        });
        // 登陆成功
        if (result.data.token) {
        //保存token
          uni.setStorageSync("token", result.data.token);
          that.token = uni.getStorageSync("token");
            uni.showToast({
              title: 登录成功",
              duration: 800,
              icon: "success",
            });
            // 刷新回到用户页页面
            uni.reLaunch({
              url: "/pages/myself/myself",
            });
            return;
          }
        }
      } else {
        uni.showToast({
          title: "已取消登录",
          duration: 500,
          icon: "success",
        });
      }
    }

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以得知获取微信小程序用户手机号的方法有两种,分别是新版和老版。下面分别介绍这两种方法: 1. 新版获取用户手机号的方法: 前端需要授权两次,一次获取用户信息授权code,另外一次获取用户手机授权code,全部传给后端后端通过用户信息授权获取openid,通过手机授权获取手机号码。具体步骤如下: - 前端调用wx.login()方法获取用户信息授权code和用户手机授权回调里的iv和encryptedData。 - 前端调用wx.getPhoneNumber()方法获取用户手机号授权code。 - 前端将获取到的codeiv、encryptedData一起传给后端。 - 后端通过用户信息授权code获取openid,通过手机授权获取手机号码。 - 后端获取到的手机号码进行绑定用户,然后通过登录验证返回给前端登录凭证token。 2. 老版获取用户手机号的方法: 前端需要传给后端授权code和用户手机授权回调里的iv和encryptedData后端通过code获取openid和sessionKey,然后用sessionKey和iv解密encryptedData获取手机号。最后通过手机号进行绑定用户,然后通过登录验证返回给前端登录凭证token。具体步骤如下: - 前端调用wx.login()方法获取用户信息授权code和用户手机授权回调里的iv和encryptedData。 - 前端将获取到的codeiv、encryptedData一起传给后端。 - 后端通过code获取openid和sessionKey。 - 后端用sessionKey和iv解密encryptedData获取手机号。 - 后端获取到的手机号码进行绑定用户,然后通过登录验证返回给前端登录凭证token

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值