app.js
App({ onLaunch: function () { /*初始化APP自動登陸 * 您也可以在任何地方進行用戶登陸驗證 *用法:首先在js文件中定義 var app = getApp(); app.getUserDataToken(); */ this.getUserDataToken(); }, getUserDataToken:function(){ var that = this; //獲取用戶緩存token 此token是服務器作為用戶唯一驗證的標識,具體請看后端代碼 var utoken=wx.getStorageSync("utoken"); wx.login({ success: function (res) { var code=res.code; wx.getUserInfo({ success: function (res) { wx.request({ //用戶登陸URL地址,請根據自已項目修改 url: 'https://66018954.qcloud.la/WxApp/index.php/UserApi/userAuthSlogin', method:"POST", data: { utoken:utoken, code: code, encryptedData:res.encryptedData, iv:res.iv }, fail:function(res){ }, success: function(res) { var utoken=res.data.utoken; //設置用戶緩存 wx.setStorageSync("utoken",utoken); } }) } }) } }) } }) |
php代碼:
public function userAuthSlogin(){ $content = file_get_contents ( 'php://input' ); $content=json_decode($content,true); $utoken=$content["utoken"]; if(!empty($utoken)&&S($utoken)){ $result["success"]=1; $result['utoken']=$utoken; echo json_encode($result); exit(); } $code=$content["code"]; $encryptedData=$content["encryptedData"]; $iv = $content['iv']; /*獲取session_key*/ $s_result=$this->getSession($code); $WxData = new WXBizDataCrypt($s_result['appid'],$s_result['session_key']); /*解密用戶數據*/ $errCode = $WxData->decryptData($encryptedData, $iv, $user_data); $wxap_key = md5(uniqid(md5(microtime(true)),true)); $result=array(); if($errCode==0){ $user_data=json_decode($user_data,true); $result["success"]=1; $result['utoken']=$wxap_key; $user_id = $this->wxUserAdd($user_data); if($user_id < 1 || empty($user_id)){ $result["success"]=-1; $result['errCode']=0; $result['msg']="獲取用戶信息出錯!"; echo json_encode($result); exit(); } $user_data['uid']=$user_id; S($wxap_key,$user_data,7200); echo json_encode($result); exit(); }else{ $result["success"]=-1; $result['errCode']=$errCode; $result['msg']="獲取用戶信息出錯!"; echo json_encode($result); exit(); } } |