您现在的位置是:首页 >技术杂谈 >uni-app获取手机号-获取用户地理位置-根据位置获取经纬度跳转高德网站首页技术杂谈

uni-app获取手机号-获取用户地理位置-根据位置获取经纬度跳转高德

小付-小付 2024-05-30 13:35:54
简介uni-app获取手机号-获取用户地理位置-根据位置获取经纬度跳转高德

一.获取手机号

1.获取手机号首先要先登录拿到code,用code去获取session_key

2.获取 code需要知道自己的AppID(小程序ID)和AppSecret(小程序密钥)

3.解密后得到手机号

 登录微信公众平台拿到自己的AppID(小程序ID)和AppSecret(小程序密钥)

 微信公众平台

获取session_key:

          uni.login({
  					success: (loginRes) => {
						let code = loginRes.code
						wx.request({
							url: `https://api.weixin.qq.com/sns/jscode2session?appid=你的appid&secret=你的secret&js_code=${code}&grant_type=authorization_code`,
							method: 'POST',
							data: {
								code: code
							},
							header: {
								'content-type': 'application/json;charset=UTF-8'
							},
							success: (res) => {
								this.sessionkey = res.data.session_key
							}
						})
					}
				});

解密:引入官方解密开放数据

服务端获取开放数据 | 微信开放文档

 下载之后我们拿到WXBizDataCrypt.js文件把它放在项目中

 import WXBizDataCrypt from "@/js/WXBizDataCrypt.js" 
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">唤起授权手机号</button>
           getPhoneNumber(e) {
 				let pc = new WXBizDataCrypt('你的AppID', this.sessionkey);
				let data = pc.decryptData(e.detail.encryptedData, e.detail.iv);
				console.log(data, "解密之后的数据包含手机号")
			},

二.获取用户地理位置

              uni.chooseLocation({
					success: function(res) {
						console.log(res, "获取当前的地理位置");
					}
				});

三.根据位置获取经纬度跳转高德

高德地图key获取方法:登录高德开放平台-控制台-应用管理-我的应用(创建新应用并添加key)

高德开放平台 | 高德地图API

 

 

                uni.request({
					url: 'https://restapi.amap.com/v3/geocode/geo?parameters',
					method: 'GET',
					data: {
						key: '你的高德地图key', 
						address: "杭州市西湖区学院路007号" 
					},
					success: (res) => {
						var latlon = res.data.geocodes[0].location.split(',')
						this.latitude = latlon[0]
						this.longitude = latlon[1]
						this.openMap()
					}
				})

 跳转到高德地图相应地址

          openMap() {
				uni.openLocation({
					latitude: Number(this.longitude),
					longitude: Number(this.latitude),
					success: (res) => {
						console.log(res, 'success');
					}
				});
			},

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。