小程序点击结算跳到登陆页,验证授权,。

在这里插入图片描述
在这里插入图片描述
.1进入登陆页,onLoad调用uni.getSetting,从响应数据看是否授权,如无授权,需点击登陆按钮,
2点击登陆按钮,@getuserinfo监听了用户点击授权的接收或者拒绝,如果拒绝,不用操作了。点击接受,从@getuserinfo事件解构出后台需要的参数。
3.解构出参数,在@getuserinfo事件里发请登陆请求。(如果请求需要code,调用uni.login()解构出code,再发送请求),登陆请求发送后,调用uni.setStorageSync保存后台响应的token。并返回上一步。
4.如果进来时已经授权,判断是否授权用 const [error, res] = await uni.getSetting();if (res.authSetting[“scope.userInfo”]) ;调用uni.getUserInfo();解构出登陆需要的参数,调用登陆函数。
vue组件:

<template>
  <view>
    <button open-type="getUserInfo" @getuserinfo="getUserInfo" type="primary">
      微信登陆
    </button>
  </view>
</template>

<script>
export default {
  methods: {
    // 点击登陆按钮,弹出是否授权
    getUserInfo(res) {
      // 用户拒绝
      if (!res.detail.iv) return;
      // 用户点击接受,解构用户相关数据
      const { encryptedData, iv, rawData, signature } = res.detail;

      // 发请请求
      this.login(encryptedData, iv, rawData, signature);
    },
    // 登陆接口
    async login(encryptedData, iv, rawData, signature) {
      // 获取登陆凭证
      const [err, res] = await uni.login();
      console.log(res);

      // 调用后端接口
      const params = await this.http({
        url: "/api/public/v1/users/wxlogin",
        method: "post",
        data: {
          encryptedData,
          iv,
          rawData,
          signature,
          code: res.code,
        },
      });
      console.log(params);
      // 记录登陆状态
      // uni.setStorageSync("token", message.token);
      uni.setStorageSync("token", "2321412自己定detoken");
      // 返回上一步操作
      uni.navigateBack();
    },
  },
  async onLoad() {
    // 小程序提供了检测用户是否授权的相关Api
    const [error, res] = await uni.getSetting();
    console.log(res);
    // 已授权
    if (res.authSetting["scope.userInfo"]) {
      const [error, res] = await uni.getUserInfo();
      // 从用户信息解构请求所需信息
      const { encryptedData, iv, rawData, signature } = res;
      // 发送请求
      this.login(encryptedData, iv, rawData, signature);
    }
  },
};
</script>

<style lang='less' scoped>
button {
  width: 600rpx;
  margin: 200rpx auto 0;
}
</style>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值