uniapp小程序获取手机号、获取用户信息

html:
<button type='primary' open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取手机号</button>
onShow(){
    let that = this
	this.getLogin().then(res=>{//获取code
		that.weChatCode = res.code
	})
},    
methods: {
    // 只有已经认证的小程序才能获取手机号或者使用云函数获取加密数据解密
	getPhoneNumber(e){  
       // 参数e是绑定的授权方法自动传入过来的, 
       //主要是为了拿到vi和encryptedData值从后台换取用户联系方式
		if ("getPhoneNumber:ok" != e.detail.errMsg){
			wx.showToast({
				icon:'none',
				title: '快捷登陆失败'
			})
			return;
		}
		let iv = e.detail.iv;
		let encryptedData = e.detail.encryptedData;
		let code = this.data.wxCode;
		let _this = this;
		//调用后台接口获取用户手机号码
		let params = {
			encrypted: encryptedData,
			iv:iv,
			code:code
		}
    },
    // 序列化
	serializeParams(obj,lastKey){
		let params = ''
		for(let key in obj){
			if(key!=lastKey){
				params += `${key}=${obj[key]}&`
			}else{
				params += `${key}=${obj[key]}`
			}
		}
		return params
	},
	//前端自己获取
    clientGetOpenid(){
    	let data = {
			appid:"wx119d1b25f9d8e3",
			secret:"5ccce61346a63766e14d",
			js_code:res.code,
			grant_type:"authorization_code"
		}
		return new Promise((resolve, reject) => {
			// 获取session_key和openid
			uni.request({
				url:`https://api.weixin.qq.com/sns/jscode2session?${that.serializeParams(data,'grant_type')}`,
				method: 'GET',
				success(wxres) {
					resolve(wxres)
					if(wxres.data.errcode){
						uni.showToast({
							title: wxres.data.errmsg,
							icon: 'none',
							mask: true	
						})
					}else{
						uni.hideLoading()
						uni.switchTab({url:'/pages/home/index'})
					}
				},
				fail(err) {
					return uni.showToast({
						title: '服务器断开链接,稍后重试',
						icon: 'none',
						mask: true
					})
				}
			})
		})
	},
	getLogin() {
		return new Promise((resolve, reject) => {
			uni.login({
				success(res) {
					resolve(res)
				},
				fail: (err) => {
					reject(err)
				}
			})
		})
	},
    getUserInfo() {
		return new Promise((resolve, reject) => {
			uni.getUserProfile({
		 		lang: 'zh_CN',
		 		desc: '用户登录/注册', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,
		 		success: (res) => {
		 			console.log(res, 'resss')
		 			resolve(res.userInfo)
		 		},
		 		fail: (err) => {
		 			reject(err)
		 		}
		 	})
		})
    },


}

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值