首页IT科技uniapp获取手机号(UNIAPP手机号一键登录)

uniapp获取手机号(UNIAPP手机号一键登录)

时间2025-06-24 10:01:23分类IT科技浏览6099
导读:使用uniapp实现移动端手机号一键登录功能。...

使用uniapp实现移动端手机号一键登录功能                。

uni一键登录是DCloud联合个推公司推出的                ,整合了三大运营商网关认证能力的服务                    。

通过运营商的底层SDK                    ,实现App端无需短信验证码直接获取手机号      ,也就是很多主流App都提供的一键登录功能

首先需要登录DCloud开发者中心            ,申请开通一键登录服务      。

 开通后会得到ApiKey和Apisecret                     ,和计费有关         ,扣费凭证        ,请勿泄露此信息!

点击应用管理——我的应用——创建应用                      ,填写信息            ,appid在manifest.json的基础配置中    ,Android 应用签名可以使用云打包的公共证书签名                       ,也可以生成自有证书            。

添加应用后点击一键登录-基础配置-添加应用(不创建应用应用签名无法填入)等待审核……

项目文件夹右键创建UNICloud云开发环境               ,新建云函数,getPhoneNumber文件夹中index.js代码示例:

use strict; exports.main = async (event, context) => { // event里包含着客户端提交的参数 const res = await uniCloud.getPhoneNumber({ appid: _UNI_ABCDEFG, // 替换成自己开通一键登录的应用的DCloud appid provider: univerify, apiKey: xxx, // 在开发者中心开通服务并获取apiKey apiSecret: xxx, // 在开发者中心开通服务并获取apiSecret access_token: event.access_token, openid: event.openid }) console.log(res); // res里包含手机号 // 执行用户信息入库等操作                    ,正常情况下不要把完整手机号返回给前端 // 如果数据库在uniCloud上                   ,可以直接入库 // 如果数据库不在uniCloud上   ,可以通过 uniCloud.httpclient API                ,将手机号通过http方式传递给其他服务器的接口                    ,详见:https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=httpclient return { code: 0, message: 获取手机号成功 } }

在package.json写入:

{   "name": "getPhoneNumber",   "dependencies": {},   "extensions": {     "uni-cloud-jql": {},     "uni-cloud-verify": {}   } }

右键uniCloud关联云服务空间或项目      ,没有的话点击新建            ,可以选免费版                     ,我选择的是阿里云

 右键getPhoneNumber上传部署

// 手机号一键登录 getIphone() {     uni.preLogin({//预登陆检查是否符合一键登录的环境         ,可不用         provider: univerify,         success: () => {             uni.login({                 provider: univerify,                 univerifyStyle: {                     "fullScreen": true, // 是否全屏显示        ,true表示全屏模式                      ,false表示非全屏模式            ,默认值为false                     。                     "backgroundColor": "#ffffff", // 授权页面背景颜色    ,默认值:#ffffff                       "phoneNum": {                         "color": "#000000", // 手机号文字颜色 默认值:#000000                        },                     "slogan": {                         "color": "#8a8b90", //  slogan 字体颜色 默认值:#8a8b90                       },                     "icon": {                         "path": "static/logo.png" // 自定义显示在授权框中的logo                       ,仅支持本地图片 默认显示App logo                        },                     "authButton": {                         "normalColor": "#3479f5", // 授权按钮正常状态背景颜色 默认值:#3479f5                           "highlightColor": "#2861c5", // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)                           "disabledColor": "#73aaf5", // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)                           "textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff                           "title": "本机号码一键登录" // 授权按钮文案 默认值:“本机号码一键登录                ”                       },                     "otherLoginButton": {                         "visible": "false", // 是否显示其他登录按钮               ,默认值:true                       },                 },                 success: (res) => {                     console.log(res)                     uniCloud.callFunction({                         name: getPhoneNumber, // 你的云函数名称                         data: {                             access_token: res.authResult                             .access_token, // 客户端一键登录接口返回的access_token                             openid: res.authResult.openid // 客户端一键登录接口返回的openid                         }                     }).then(dataRes => {                         console.log(云函数返回的参数, dataRes)                         uni.showToast({                             title: `当前手机号为:${dataRes.result.phoneNumber}`,                             icon: "none"                         })                     }).catch(err => {                         console.log(云函数报错, err)                     })                     uni.showToast({                         title: res.authResult,                         icon: "none"                     })                     uni.closeAuthView() //关闭一键登录弹出窗口                 },                 fail(res) { // 登录失败                     uni.closeAuthView() //关闭一键登录弹出窗口                     console.log(失败)                 },             })         },         fail(res) {             console.log(一键登录失败,res)             if (res.errMsg != login:ok) {                 uni.showToast({                     title: res.metadata.msg,                     icon: "none"                 })             }             //如果手机没有插入有效的sim卡,或者手机蜂窝数据网络关闭                    ,             //都有可能造成预登录校验失败         。         }     }) },

成功后页面:

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
时间序列预测代码(CNN+LSTM+Attention实现时间序列预测(PyTorch版)) ps里的像素和厘米怎么换算(ps中如何进行像素和厘米转换)