快手一键登录
<template>
<view>
<button class="tel-button" @click="onClickToast">手机号快捷登录</button>
<button @getphonenumber="getPhoneNumber" class="login-btn" open-type="getPhoneNumber" v-if="checked"></button>
</view>
</template>
<script>
//解密文件
var WXBizDataCrypt = require('../../utils/WXBizDataCrypt.js');
export default {
methods: {
onClickToast: function () {
//登录条件判断
if(!this.checked){
uni.showToast({
title: '请阅读并勾选协议',
icon: 'none'
});
return;
}
},
getPhoneNumber: async function (e) {
var that = this;
// console.log("点击按钮获取手机号",e); //获取encryptedData、iv,encryptedData就是加密的数据
if(e.detail.errMsg == 'getPhoneNumber:fail no permission'){
uni.showToast("小程序未认证", 'fail',"none", 1000);
return false;
}else if(e.detail.iv == undefined || !e.detail.iv){
uni.showToast("授权失败",'fail',"none", 1000);
return false;
} else if(e.detail.errMsg == 'getPhoneNumber:user deny'){
//用户拒绝授权,停留在当前页
uni.showToast({
title: "用户拒绝授权",
icon: 'none'
})
}else{
//获取code
let code = await this.getCode();
console.log(code)
let reer = await that.$Util.session_key({code:code});
//使用官方接口获取session_key
//地址:https://open.kuaishou.com/oauth2/mp/code2session
//参数需要,js_code,app_id,app_secret
that.checkSession(reer, e, (data)=>{
//解密需要使用解密文件
获取到手机号---data.phoneNumber
});
}
},
checkSession(reer, ea, e){
let ksappid = uni.getAccountInfoSync().miniProgram.appId
// return new Promise(function (e, t) {
ks.checkSession({
success: (res) => {
//进行解密
var pc = new WXBizDataCrypt(ksappid,reer.data.data.session_key);
var data = pc.decryptData(ea.detail.encryptedData, ea.detail.iv);
e(data)//返回data解密后的数据
},
fail: (err)=>{
console.log("失效 重新login")
}
})
// })
},
getCode(){
return new Promise(function (e, t) {
ks.login({
provider: 'univerify',
univerifyStyle: { },// 自定义登录框样式
success(res){ // 获取到code
e(res.code);
},
fail(res){ // 登录失败
console.log(res.errMsg)
}
})
})
},
}
}
</script>