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'
});
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律