1、首先需要在dcloud开发者控制台开通一键登录
开通一键登录服务, 获取关键最关键的两个参数ApiKey和ApiSecret
真机调试无需添加应用,如需打包使用请添加。一键登录应用ID为离线打包时配置的appid
2、登录云服务空间,创建服务空间,选择云服务商等
3、在uni-app项目中开通uniCloud服务【关联云空间选择阿里云或腾讯云】
4、新建云函数 创建 getPhoneNumber
新建云函数后会有一个index.js【getPhoneNumber/index.js】生成,粘贴以下代码:
'use strict';
// const crypto = require('crypto')
exports.main = async (event, context) => {
//event为客户端上传的参数
const res = await uniCloud.getPhoneNumber({
appid: '__UNI__66AWES5', // 替换成自己开通一键登录的应用的DCloud appid,使用callFunction方式调用时可以不传(会自动取当前客户端的appid),如果使用云函数URL化的方式访问必须传此参数
provider: 'univerify',
apiKey: '******', // 在开发者中心开通服务并获取apiKey
apiSecret: '******', // 在开发者中心开通服务并获取apiSecret
access_token: event.access_token,
openid: event.openid
})
// 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端
// 如果数据库在uniCloud上,可以直接入库
// 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,将手机号通过http方式传递给其他服务器的接口,详见:https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=httpclient
//返回数据给客户端
return {
code: 0,
message: '获取手机号成功',
data:res
}
}
5、项目右键关联云服务空间
选择创建的云服务空间
6、关联后上传部署到云空间
7、勾选一键登录(项目中的 manifest.json)
8、一键登录本地方法
// 手机号一键登录
loginPhone() {
uni.preLogin({
provider: 'univerify',
success(res) {
//预登录成功
// 显示一键登录选项
console.log(res);
console.log('999',