在发布版里,可以弹出申请手机号码框,用户同意后,没反应,无法获取手机号码,在电脑里测试,在真机里测试是可以的,是什么问题?
API https://api.weixin.qq.com/wxa/business/getuserphonenumber
"libVersion": "2.30.3",
以下是代码
getPhoneNumber (e:any) {
var that=this;
wx.request({
url: "https://我服务器的链接/xxxxxxx.jsp", // 获取 appid scret
success: function (res){
//console.log(res.data.appid+" "+res.data.secret)
wx.request({ // 获取 access_token
url: "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+res.data.appid+"&secret="+res.data.secret,
success: function (res2){
//console.log(res2.data);
that.setData({
access_token:res2.data.access_token,
});
wx.request({
url: "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="+res2.data.access_token,
method:"POST",
data:{
code:e.detail.code
},
header: {
'content-type': 'application/json' // 默认值
},
success: function (res3){ // 这里没反应
that.setData({ // 这里没反应
log:'手机号', // 这里没反应
tel:res3.data.phone_info.phoneNumber, // 这里没反应
});
that.savetel(res3.data.phone_info.phoneNumber); // 这里没反应
},
fail:function(err){ // 这里没反应
wx.showToast({ // 这里没反应
title: err.errMsg, // 这里没反应
icon:"error",
duration:2000
}); } }); } }); } }); }
///////////////////////////////////////////////////////////////////////
const app2 = getApp()
savetel(e:String) {
var that=this;
wx.setStorage({
key: "tel",
data: e,
encrypt: true, // 若开启加密存储,setStorage 和 getStorage 需要同时声明 encrypt 的值为 true
success() {
app2.globalData.phone=e; // 保存手机号码到全局变量
} }); },
去后台完善一下用户隐私协议呢
小程序内不能请求 api.weixin.qq.com ,这个你得在自己服务器里面请求,再返回数据到小程序。