在uni-app中使用手机号一键登录

1、首先需要在dcloud开发者控制台开通一键登录

https://dev.dcloud.net.cn/uniLogin

开通一键登录服务, 获取关键最关键的两个参数 ApiKey 和 ApiSecret

真机调试无需添加应用,如需打包使用请添加。一键登录应用ID为离线打包时配置的appid

 2、登录云服务空间,创建服务空间,选择云服务商等

https://unicloud.dcloud.net.cn/home

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: '******', // 在开发者中心开通服务并获取apiKeyapiSecret: '******', // 在开发者中心开通服务并获取apiSecretaccess_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',2222);console.log('预登录成功');uni.login({provider: 'univerify',univerifyStyle: { // 自定义登录框样式//参考`univerifyStyle 数据结构`"fullScreen": true, // 是否全屏显示,默认值: false"title": '快速登录',"backgroundColor": "#ffffff", // 授权页面背景颜色,默认值:#ffffff"icon": {"path": "../../static/my/头像.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo},"phoneNum": {"color": "#000000", // 手机号文字颜色 默认值:#000000"fontSize": "18" // 手机号字体大小 默认值:18},"slogan": {"color": "#8a8b90", //  slogan 字体颜色 默认值:#8a8b90"fontSize": "12" // slogan 字体大小 默认值:12},// 一键登录"authButton": {"normalColor": "#3479f5", // 授权按钮正常状态背景颜色 默认值:#3479f5"highlightColor": "#2861c5", // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)"disabledColor": "#73aaf5", // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)"textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff"title": "本机号码一键登录" // 授权按钮文案 默认值:“本机号码一键登录”},// 其他登录方式"otherLoginButton": {"visible": "true", // 是否显示其他登录按钮,默认值:true"normalColor": "#f8f8f8", // 其他登录按钮正常状态背景颜色 默认值:#f8f8f8"highlightColor": "#dedede", // 其他登录按钮按下状态背景颜色 默认值:#dedede"textColor": "#000000", // 其他登录按钮文字颜色 默认值:#000000"title": "密码登录", // 其他登录方式按钮文字 默认值:“其他登录方式”"borderWidth": "1px", // 边框宽度 默认值:1px(仅ios支持)"borderColor": "#c5c5c5" //边框颜色 默认值: #c5c5c5(仅ios支持)},// 自定义按钮登录方式"buttons": { // 仅全屏模式生效,配置页面下方按钮  (3.1.14+ 版本支持)  "iconWidth": "45px",        // 图标宽度(高度等比例缩放) 默认值:45px  "list": [{  "provider": "apple","iconPath": "/static/test.jpg",  // 图标路径仅支持本地图片  },  {  "provider": "weixin","iconPath": "/static/test.jpg",  }  ]  },"privacyTerms": {"defaultCheckBoxState": "true", // 条款勾选框初始状态 默认值: true"textColor": "#8a8b90", // 文字颜色 默认值:#8a8b90"termsColor": "#1d4788", //  协议文字颜色 默认值: #1d4788"prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”"suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”"fontSize": "12", // 字体大小 默认值:12,"privacyItems": [// 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效{"url": "https://", // 点击跳转的协议详情页面"title": "用户服务协议" // 协议名称}]}},success(res) { // 登录成功console.log(res);this.openid = res.authResult.openid;this.access_token = res.authResult.access_token;console.log(this.openid);console.log("access_token",this.access_token);// 客户端(调用云函数)  调用云函数来实现整个业务逻辑// 在得到access_token后,通过callfunction调用云函数uniCloud.callFunction({name:"getPhoneNumber",data:{'openid': this.openid,'access_token': this.access_token}}).then(res=>{console.log("获取成功");console.log(res); // res 内容则包含手机号码// 获取用户的手机号this.phoneNumber=res.result.data.phoneNumber;console.log(this.phoneNumber);console.log(res);return utils.request("/api/api.php?action=phonelogin", //接口"POST",{'参数'},false, true, true).then(res => {uni.closeAuthView() //成功关闭授权页面console.log('登录成功', res)console.log(res.code);if (res.code == 1){setTimeout(() => {uni.redirectTo({url: '/pages/index/index'})}, 500)}})}).catch((err)=>{// 执行失败})},// 当用户点击自定义按钮时,会触发uni.login的fail回调[点击其他登录方式,可以跳转页面]// 判断返回数据执行任意逻辑fail(res){  // 登录失败console.log(res.errCode)console.log(res.errMsg)if (res.code == "30002") {console.log('密码登录');}else if(res.code == "30008"){console.log('自定义按钮登录方式');}}})},fail(res) { // 预登录失败// 不显示一键登录选项(或置灰)// 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器console.log('失败',2222);console.log(res.errCode)console.log(res.errMsg)}});
},

 

可以查看点击一键登录时返回的参数

两个注意点补充下:

  • 真机测试的时候选择标准基座,不可以选择自定义基座否则会提醒没添加oauth模块
  • 使用云函数做一键登录时,优先使用云端函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/64486.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用计算机搞音乐,一种使用计算机自动创作歌曲的方法与流程

本发明属于歌曲创作方法技术领域,具体的说是涉及一种使用计算机自动创作歌曲的方法。 背景技术: 自动创作歌曲在流程上分为三种技术,即计算机作曲、计算机编曲和计算机演唱。计算机作曲(automated composition)或称算法作曲(algorithmic comp…

将哼唱转换为旋律音符

# coding: utf-8# In[1]:import matplotlib.pyplot as plt import librosa import librosa.display import librosa.util import numpy as np import pysynth# In[2]:#要转换的输入wav音频文件 input_wavr"d:\test0.wav" #要输出的音频文件 output_wavr"d:\libr…

忘却的旋律java2_mc忘却的旋律启动器下载

mclauncher+(我的世界旋律启动器)是忘却的旋律神隐制作的mc游戏启动器,又叫做mc忘却的旋律启动器,我的世界玩家必备的游戏启动辅助,功能非常期待,目前支持mc1.8、1.7等各个版本,欢迎下载使用。 minecraft+特色功能 1.自动获取推荐服务器在主界面显示 2.自动选择最优设置 您…

计算机在音乐教学的应用论文开题报告,音乐教育论文开题报告(范文详解)

开题报告随着现代科学研究活动计划性的增强和科研选题程序化管理的需要而产生的。论文写作是更是少不了开题报告,而开题报告作为科研课题的说明材料,其写作也是有一定的方法的,下面我们就给大家例出一篇音乐教育论文开题报告的范文&#xff0…

学生用计算机app,大学生计算器app

大学生数学计算器是一款专为大学生设计的多功能计算器,汇集了普通和科学计算器功能,并且支持悬浮使用,随时选择开启不同的使用模式,适合学生多场景使用,可以根据不同数学公式进行不同计算功能选择,计算结果…

如何开发亲戚计算器

这是M小白实验室第一篇娱乐性科普文章 笔者博客:mwhitelab.com 笔者公众号:技术杂学铺 又到了过年的时候,每到这个时候,你总是能见到自己几乎没印象但父母就是很熟的亲戚。 而且关系凌乱到你自己都说不清。 不信?那…

分享一款学生、工程师多功能计算器

下 载 ​【软件名称】:全能计算器 【软件语言】:简体中文 【软件大小】:10.1M 【安装环境】:Android 【下载方式 】: 百度网盘链接 链接:https://pan.baidu.com/s/1xJvFQ7Qp_AYIDs0DvNsfpg 提取码&a…

仅200行代码实现科学计算器,Antlr真是太强大了

由于最近参加的Talent Plan,需要自己实现一个基于Raft的KV引擎,所以之前说的分布式事务的内容,还要再鸽一段时间,所以为了补偿大家,我们来学学antlr吧,这次我们不在外部维护变量表,而是通过设置…

学生专用计算机多少人,怎么使用学生专用计算器?

计算机是大家生活常用的辅助设备,但普通计算器只能够计算加减乘除等基础需要,学生专用计算器是可以满足高难度的计算需求,其中的一些功能可能大家不太清楚,下面就来讲解一下它的是使用方法。 基本按键 学生专用计算器采用的是双行…

小狗为什么敢对大狗挑衅?原来有这几个“原因”

相信很多人都见过小型犬对着大型犬吠叫得很凶,“挑衅”大狗的行为。明明双方都不是一个量级的,难道小狗就没有自知之明,真的敢和大狗开战吗? 其实小狗对大狗凶,是有几个原因的!如果没有这些因素了&#xf…

威洛特:狗狗乱咬东西都是有原因的

有的时候,主人回到家中,发现狗狗把沙发、拖鞋都啃了个遍,看到这种场景是不是都想原地爆炸呢?不过狗狗出现这种行为都是有原因的,有些时候主人自身也有责任的。狗狗为什么会喜欢咬东西呢?威洛特这就带你来了…

威洛特:导致狗狗食欲不振的原因有哪些

狗狗食欲不佳可以先观察它的精神状态怎么样,有没有呕吐腹泻的症状,如果除了食欲不好之外没有其他症状表现可以给狗狗喂食益生菌调理一下肠胃。如果有出现呕吐腹泻的现象的话则需要进行对症治疗。接下来可以跟着威洛特一起来了解狗食欲不好的常见原因&…

狗狗出现这五种“现象”,多半是讨厌主人了,而你还不自知?

现在养狗的人很多,有时候在饲养的过程中,主人做了一些让狗狗不喜欢的事情,但是主人还不自知。当狗狗出现这五种“现象”时,多半是讨厌主人了。 第一种:不对你摇尾巴 摇尾巴是狗狗最常见的一种示好方式,尤其…

每日一犬 · 哈瓦那犬

哈瓦那犬 是一种坚强的短腿小型犬 具有柔软而厚密的未经修剪的毛发 它的多毛尾巴弯曲翘向后背 是一种富有感情令人喜欢的犬 哈瓦那犬 身 高:21cm-26cm 体 重:3kg-6kg 寿 命: 10年-14年 习 性:温和、惹人喜爱 喜 食:适当的饲…

小狗7岁了

变量就是在程序的运行过程中数值可变的数据,用来记录运算中间结果或保存数据。程序会为变量在内存中开辟一个存储区域,该区域有自己的名称(变量名),类型(数据类型),该区域的数据可以…

争当“猫狗”爹妈,“它经济”成流量引擎

随着国民收入水平的逐步提高、消费观念升级以及宠物观念的日益成熟,宠物经济发展迅猛且潜力大。 无论是之前"金毛siri被托运致死“登上各平台热搜,还是疫情封控期间大家分享宠物在家等主人回家的各类视频,都印证了现今宠物地位的大幅度提…

日语中动物的叫声是怎样的-狗子怎么叫的

在日文中动物的一些叫声是怎么样的,用日文怎么形容呢 动物的叫声(动物の鸣き声) 大象(ぞう):パオーンパオーン paon paon 猴子(さる):ウキーキー uki kii 熊&#xf…

四、狗狗大全应用实战

传送门 《一、Android Studio的安装和使用》 《二、Android界面开发》 《三、Android网络开发》 《四、狗狗大全应用实战》 视频教程 https://space.bilibili.com/249229063/channel/seriesdetail?sid1930119 学习目标 综合前面学习内容,完成狗狗大全App&…

网络对大学生影响的调查研究报告

作者:倪宇轩,王伟燃,卢锴,徐新顺, 胡大宸(排名不分先后) 摘要:现在大多数大学生由于在高中时期,对网络接触的十分少,进入大学之后难以端正对待网络的态度,并且…

设计《大学生暑期社会实践调查问卷》

1.设计“大学生暑期社会实践调查问卷”页面,如下图所示。 2.调查表前导语的内容如下所示: 大学生暑期社会实践调查问卷 亲爱的同学:大家好! 为了更好的了解人们对近年来计算机类专业填报火热现象的看法,特制定本问…