IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> uniapp开发微信小程序-用户授权登录和获取手机号码 -> 正文阅读

[移动开发]uniapp开发微信小程序-用户授权登录和获取手机号码

?小程序开放文档

uniapp开发的小程序配置,找到manifest.json,填入正确的小程序appId;

hbuilderx>运行>运行到小程序模拟器(安装开发者工具),编译完成之后会直接在微信开发者工具内打开;

?登录流程解析:

  1. 判断用户是否登录,如果未登录需重新授权,已登录直接跳转进入小程序;
  2. uni.getUserProfile 弹出微信授权窗口,获取用户信息;
  3. uni.login登录成功获取code,传给后端;
  4. 创建getPhoneNumber按钮,用户允许后(需要用户操作),获取code,传给后端;

?核心代码:

1、判断用户是否登录

onLoad() {
	// #ifdef MP-WEIXIN
	const token = this.$Storage.getToken()
	console.log('token===========', token)
	if(!token) {
		this.wechatLogin() // 登录授权
	} else {
		uni.switchTab({
		    url: '/pages/home/index'
	    });
	}
	// #endif
},

?2、授权登录弹窗,获取用户信息

wechatLogin() {
	uni.showModal({
		title: '授权登录',
		content: '是否授权登录微信小程序?',
		success: () => {
			// 1、uni.getUserProfile 获取用户信息 
			uni.getUserProfile({
				desc: '登录后可同步数据',
				lang: 'zh_CN',
				success: (infoRes) => {
					console.log('用户信息-----------', infoRes)
					this.userInfo = infoRes.userInfo;
					// 2、uni.login 获取code 
					uni.login({
						provider: 'weixin',
						success: async (loginRes) => {
							console.log('获取code-----------', loginRes)
							this.sessionId = await this.$apis.authLoginWechat({code: loginRes.code})
							this.showPhone = true
						},
						fail: function(err) {
						}
					});
				},
				fail: function(err) {
				}
			});
		}
	})	
}


?3、创建getPhoneNumber按钮,获取手机号码

<!-- #ifdef MP-WEIXIN -->
<view class="popup-class" v-if="showPhone">
	<view class="get-phone">
		<view class="p2">申请获取您绑定的手机号</view>
		<button 
			class="phone-button" 
			open-type="getPhoneNumber" 
			@getphonenumber="getPhoneNumber">
			确 认
		</button>
	</view>
</view>
<!-- #endif -->

?4、调用getPhoneNumber,获取code,传给后端

// 3、调用getPhoneNumber
async getPhoneNumber(e) {	
	console.log('获取手机号码======code:', e.detail.code)
	// 注意:如果获取不到code 确认下开发者工具调试基础库版本是否为 2.21.2 及以上
	let params = {
		code: e.detail.code,
        nickName: this.userInfo.nickName,
        avatarUrl: this.userInfo.avatarUrl,
		sessionId: this.sessionId
	}
	let token = await this.$apis.getWechat(params) 
	this.$Storage.setToken(token)
	uni.switchTab({
		url: '/pages/home/index'
	});
},

?

?注:getPhoneNumber 返回的 code 与 wx.login 返回的 code 作用是不一样的,不能混用。

附:控制台信息

其他问题:

1、小程序编译时,控制台可能会有些报错导致编译失败,例如渲染层错误、websocket的错误、?WXML 文件编译错误等等,可能是文件路径有问题,或者切换下调试基础库重新编译即可;

2、小程序上传时,要提前做好分包,组件要按需引入,图片和音频之类的尽量放到服务器上,编译的时候代码要压缩,否则都会导致上传失败,解决办法都有教程,照做即可;

3、小程序真机调试时,遇到关闭调试模式无法发出请求的情况,在小程序后台-开发-开发设置-服务器域名,正确配置https域名即可;

?以上就是对小程序的部分总结,希望以上分享能帮助到大家。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:39:30  更:2022-11-05 00:40:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 16:33:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码