随笔 - 77  文章 - 0  评论 - 0  阅读 - 21363 
ttml部分,实现登录授权按钮
在组件中使用了if。。。else 。。。语句  
 (1)bindtap="bindgetuserinfo   绑定一个bindgetuserinfo   事件
 (2)bindgetuserinfo="bindgetuserinfo"     绑定一个bindgetuserinfo   事件. 。bindgetuserinfo属性是微信getUserInfo()特有的事件绑定属性
   注意:抖音不支持此种此  bindgetuserinfo="bindgetuserinfo"   改 为bindtap="bindgetuserinfo" 
 
 <view class="iw100 mt20">       
      <van-button type="danger" disabled="{{disAbled}}" color="linear-gradient(180deg, #99D0CD 0%, #60A39E 100%);" 
    round size="large"lang="zh_CN" wx:if="{{canIUseGetUserProfile}}" bindtap="bindgetuserinfo"> {{$.languageMap.sqdl}} 
   </van-button>
     <van-button type="danger" disabled="{{disAbled}}" color="linear-gradient(180deg, #99D0CD 0%, #60A39E 100%);" 
    round size="large"lang="zh_CN" wx:else open-type="getUserInfo" bindgetuserinfo="bindgetuserinfo"> {{$.languageMap.sqdl}}
  </van-button>
<view>
 
js部分:
 
事件:
bindgetuserinfo(e) {
    let that = this
    if (that.data.canIUseGetUserProfile) {
      wx.getUserProfile({
        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
        success: (res) => {
          let teminfo = res.userInfo;
          that.setUserInfo(teminfo);
        }
      })
    }else{
      let teminfo = e.detail.userInfo
      that.setUserInfo(teminfo);    //调用封装好的获取到后台传过来的数据的  setUserInfo()方法
    }
  },
 
 
//获取用户授权信息,
setUserInfo(teminfo) {
    let that = this;
    let mainData = {
      user_pics_url: teminfo.avatarUrl,     //用户头像
      user_nickname: teminfo.nickName,   //用户昵称
      user_sex: teminfo.gender === 0 ? '未知':(teminfo.gender === 1 ? '男' : '女'),
      user_age: teminfo.user_age    //年龄
    };
   //拿到了用户数据之后,证明用户已经授权同意授权
   //于是我们自动执行登录,调用内部的api
    tt.login({
      success: res => {        
        store.data.code = res.code;
        let data = {
          'code': res.code,
          'anonymous_code':res.anonymousCode

 

        };//登录的时候发起请求   web.webRequest()  里面封装了抖音请求tt.request()  和 微信wx.request() 方法
        web.webRequest({
          methods: 'POST',    //请求的方式
          interface: 'reg',        //请求的接口
          data: data               //请求参数   这是已经封装好了的参数对象。(根据所需安排,非必须的)
        }).then(res => {        //promise  的箭头函数(无this对象)
          tt.setStorageSync('sm_userinfo', res.result.data);
          that.store.data.token = res.result.data.api_token;    //返回api_token
          that.store.data.serviceInfo = res.result.data; // 判断有没有头像和昵称,用来更新用户信息
          // store.data.isFirst = res.result.data.is_first

 

          that.store.data.sessionKey = res.result.data.session_key;
          that.store.data.phoneNum = res.result.data.user_mobile;
 
          //编辑用户的信息请求(这部分可以截至以上代码抽离出来作为修改信息使用),
          web.webRequest({
            methods: 'POST',
            interface: 'edit',
            data: mainData
          }).then(res => {    返回更新后的用户数据
            console.log(res, '更新用户信息成功');
            that.store.data.userInfo = teminfo;
            that.store.data.loseaut = false;
            that.store.data.serviceInfo.user_pics = teminfo.avatarUrl;
            that.store.data.serviceInfo.user_nickname = teminfo.nickName;
            let temp = {
              userInfo: teminfo,
              user_pics: teminfo.avatarUrl,
              user_nickname: teminfo.nickName
            };
            let temp1 = JSON.parse(JSON.stringify(tt.getStorageSync('sm_userinfo')));
            let temp2 = Object.assign(temp, temp1);
            tt.setStorageSync('sm_userinfo', temp2);    //存储用户信息
            tt.navigateBack();                                        //返回上级菜单
          });
        });
      }
    });
  },

    / /授权成功,触发返回指定路径

  onClickLeft() {
    tt.switchTab({
      url: '/pages/index/index'
    });
  }
posted on   rider_yang  阅读(68)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示