注意若是个人的不能获取到手机号没有权限
该文档微信写的时候是个人的无法获取手机号后续未测试 介意勿看 祝你们加油
首先在uni-app建一个项目
本文档按照视频写的 (时间到27分钟可以自己继续往下看)
视频链接
第二步自己注册一个微信小程序(我也忘记我怎么注册的贴一个网址哈哈)
微信小程序注册
然后创建一个文件夹因为他是登陆么所以单独拎出来(你们随意)
然后写复制代码
let global={
//获取值
userInfo:{
openid:null,
session_key:null
},
// 小程序的
appId:'',
appSecret:'',
/**
* 获取opinid和sessionkey
*/
getOpenId:function(){
var that=this;
//获取code
uni.login({
provider:'weixin',
success:function(res){
console.log('获取code:'+JSON.stringify(res))
let code=res.code;
that.getOpenIdByJs(code,data=>{
that.userInfo.openid=data.openid;
that.userInfo.session_key=data.session_key;
});
}
});
},
//
/**通过code换取对应的key(js版本 ,数据不安全)
* @param {Object} code
*/
getOpenIdByJs:function(code,callback){
// let url='https://api.weixin.qq.com/sns/jscode2session?appid='+this.appId+
// '&secret='+this.appSecret+'&js_code='+code+'&grant_type=authorization_code';
// uni.request({
// url:url,
// data:{},
// 第二种写法
uni.request({
url:'https://api.weixin.qq.com/sns/jscode2session?appid',
data:{
appid:this.appId,
secret:this.appSecret,
js_code:code,
grant_type:'authorization_code'
},
success: (res) => {
console.log('获取opinid:'+JSON.stringify(res))
callback(res.data);
}
});
}
};
// 导出
module.exports=global;
main.js加入 注意自己换地
// 引入 获取小程序
import global from '@/common/global.js';
// 全局用$
Vue.prototype.$global=global;
// 登录时自动获取 直接调用
Vue.prototype.$global.getOpenId();
appid 和appSecret的位置
https://mp.weixin.qq.com/
到这了用微信开发工具运行一下
得到这样的
继续往下走
在index.vue写
<button class="phoneLogin" type="primary" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber">手机号一键登录</button>
然后运行就看到了
悲伤那么大(因为我到这才发现我不可以获取,想了一下还是继续写下去吧)
然后下载一个微信解密包
微信手机号解密包
虽然我打开他是空页面但是他就莫名其妙的下载下来了。。
打开文件夹之后
打开node
第一个是domo可以自己看一眼或者直接往下走
把下边的那个复制到我们的项目中
调用
/**
* 获取解密并返回
* @param {Object} encryptedData
* @param {Object}
*/
getMobile(encryptedData,iv){
let data=this.decoeWxData(encryptedData,iv) ;
},
/**微信解密
* @param {Object} encryptedData 密文
* @param {Object} iv 向量
*/
decoeWxData:function(encryptedData,iv){
var WXBizDataCrypt = require('./WXBizDataCrypt.js')
var pc = new WXBizDataCrypt(this.appId, this.userInfo.session_key)
var data = pc.decryptData(encryptedData , iv)
console.log('解密后 data: ',JSON.stringify(data) )
return data;
}
};
index.vue
methods:{
getPhoneNumber(e){
let encryptedData=e.detail.encryptedData;
iv=e.detail.iv;
this.mobile= this.$global.getMobile(encryptedData,iv);
}
}