app.js中的方法改为如下:
//app.js
App({
globalData: {
userInfo: null,
openid: null,
},
onLaunch: function () {
// 展示本地存储能力
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登录
wx.login({
success:res =>{
var code = res.code; //返回code
wx:wx.request({
url: 'https://你的域名.cn/public/infor/Infor/wxopenid',
data: { id : code },
header: { 'content-type': 'application/json'},
method: 'GET',
success: res => {
console.log(res.data.openid)
this.globalData.openid = res.data.openid
}
})
}
})
/*wx.login({
//获取code
success: res => {
var code = res.code; //返回code
var appId = '你的appid';
var secret = '你的app密钥';
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code',
data: {},
header: {
'content-type': 'json'
},
success: res => {
var openid = res.data.openid //返回openid
//console.log('openid为' + openid);
this.globalData.openid = openid
}
})
//this.globalData.openid = openid
}
})*/
// 获取用户信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
//console.log(res);
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})
},
})
上面注释掉的是原来的方法,但是由于不能添加到白名单所以修改为他上面的那个wx:login方法,但老方法虽然不能用我也不舍得删
后端Infor文件中php代码如下
public function wxopenid(){ $appId = '你的appid'; $secret = '你的app密钥'; $js_code = $_GET['id']; //创建请求数据 $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appId}&secret={$secret}&js_code={$js_code}&grant_type=authorization_code"; $data = $this->curl_get_https($url); print_r($data); } public function curl_get_https($url) { $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 // curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在 $tmpInfo = curl_exec($curl); //返回api的json对象 //关闭URL请求 curl_close($curl); return $tmpInfo; //返回json对象 }