一.获取手机号
1.获取手机号首先要先登录拿到code,用code去获取session_key
2.获取 code需要知道自己的AppID(小程序ID)和AppSecret(小程序密钥)
3.解密后得到手机号
登录微信公众平台拿到自己的AppID(小程序ID)和AppSecret(小程序密钥)
微信公众平台
获取session_key:
uni.login({success: (loginRes) => {let code = loginRes.codewx.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');}});},