這里簡單介紹用php后台實現獲取openid並保存到數據庫;
微信的登陸流程是這樣的
首先前端發送請求到服務器: wx.login({ success: function (res) { var code = res.code;//發送給服務器的code wx.getUserInfo({ success: function (res) { var userNick = res.userInfo.nickName;//用戶昵稱 var avataUrl = res.userInfo.avatarUrl;//用戶頭像地址 var gender = res.userInfo.gender;//用戶性別 if (code) { wx.request({ url: 'http://localhost/test/getopenid.php',//服務器的地址,現在微信小程序只支持https請求,所以調試的時候請勾選不校監安全域名 data: { code: code, nick: userNick, avaurl: avataUrl, sex: gender, }, header: { 'content-type': 'application/json' }, success: function (res) { console.log(res.data); wx.setStorageSync('name', res.data.name);//將獲取信息寫入本地緩存 wx.setStorageSync('openid', res.data.openid); wx.setStorageSync('imgUrl', res.data.imgurl); wx.setStorageSync('sex', res.data.sex); } }) } else { console.log("獲取用戶登錄態失敗!"); } } }) }, fail: function (error) { console.log('login failed ' + error); } }) 這樣就實現了將前端獲取的code發送到服務器,code每次獲取的都不一樣;
服務器getopenid.php代碼: <?php text(); function text() { $code = $_GET['code'];//小程序傳來的code值 $nick = $_GET['nick'];//小程序傳來的用戶昵稱 $imgUrl = $_GET['avaurl'];//小程序傳來的用戶頭像地址 $sex = $_GET['sex'];//小程序傳來的用戶性別 $url = 'https://api.weixin.qq.com/sns/jscode2session?appid=yourAppid&secret=appSecret&js_code=' . $code . '&grant_type=authorization_code'; //yourAppid為開發者appid.appSecret為開發者的appsecret,都可以從微信公眾平台獲取; $info = file_get_contents($url);//發送HTTPs請求並獲取返回的數據,推薦使用curl $json = json_decode($info);//對json數據解碼 $arr = get_object_vars($json); $openid = $arr['openid']; $session_key = $arr['session_key']; $con = mysqli_connect('localhost', 'root', '123');//連接數據庫 if ($con) { if (mysqli_select_db($con, 'students')) { $sql1 = "select * from weixin where openid = '$openid'"; $result = mysqli_query($con, $sql1); $result = mysqli_fetch_assoc($result); if ($result!=null) {//如果數據庫中存在此用戶的信息,則不需要重新獲取 $result = json_encode($result); echo $result; } else {//沒有則將數據存入數據庫 if ($sex == '0') { $sex = 'none'; } else { $sex = '1' ? 'man' : 'women'; } $sql = "insert into weixin values ('$nick','$openid','$session_key','$imgUrl','$sex')"; if (mysqli_query($con, $sql)) { $arr['nick'] = $nick; $arr['imgUrl'] = $imgUrl; $arr['sex'] = $sex; $arr = json_encode($arr); echo $arr; } else { die('failed' . mysqli_error($con)); } } } } else { die(mysqli_error()); } } ?>