打开DCLOUD后台,找到一键登录
充值成功后添加应用。对公账户充值不能及时到账,可到我的账单上传回执单,加速人工审核。
然后添加应用提交申请,我是第一天下午四五点申请,第二天早上就通过了。
回到代码里面。创建云函数。
选择一键登录模块。云函数名字随便取哈
配置云函数。
'use strict';
exports.main = async function(event, context){
const res = await uniCloud.getPhoneNumber({
provider: 'univerify',
appid: context.APPID, // 客户端callFunction时携带的AppId信息
apiKey: 'xxx', // HBuilderX 3.94及以上版本可以不传此参数,部分模板/插件的旧版本仍会检查配置,请阅读注意事项 就是说满足就删除这行 我反正删除了
apiSecret: 'xxx', // HBuilderX 3.94及以上版本可以不传此参数,部分模板/插件的旧版本仍会检查配置,请阅读注意事项 就是说满足就删除这行 我反正删除了
access_token: event.access_token,
openid: event.openid
})
return res //返回是 你通过接口就能拿到这个res
}
这里的key和密钥自己看自己版本填不填,不需要就删除了。
说一下这里的作用,就是前端调用接口的时候,这里接收你的数据,并返回。
有兴趣的可以一步一步打印来看就好了。
配置文件勾选一键登录
登录页面
<template>
<button @click="loginByone">一键登录</button>
</template>
<script>
export default {
methods: {
//一键登录接口
loginByone() {
uni.login({
provider: 'univerify',
univerifyStyle: {
fullScreen: false,
},
success: (res) => {
this.getPhoneNumberInfo(res.authResult.access_token, res.authResult.openid)
console.log(res)
},
fail: (error) => {
uni.showToast({
title: error.errMsg,
icon: 'none'
})
console.log(error)
}
})
},
//获取手机号
getPhoneNumberInfo(access_token, openid) {
// 在得到access_token后,通过callfunction调用云函数
uniCloud.callFunction({
name: 'one_phone_login', // 你的云函数名称
data: {
'access_token': access_token, // 客户端一键登录接口返回的access_token
'openid': openid // 客户端一键登录接口返回的openid
}
}).then(res => {
console.log(res);
// 登录成功,可以关闭一键登录授权界面了
uni.closeAuthView()
}).catch(err => {
console.log(err);
// 处理错误
})
},
}
}
</script>