微信小程序——unionId
来源:互联网 发布:华为手机全球销量知乎 编辑:程序博客网 时间:2024/04/29 23:10
如果你的小程序没有绑定微信开放平台,解密的数据中不包含unionid参数
扫码登录(tp后台)
控制器
public function getSession(){ $code=$_POST['code']; if(!$code){ $data['errmsg']='code为空'; $data['error']=1; // $this->response($data,'json'); echo '{"data":'.json_encode($data).'}'; exit; } if(!$_POST['userInfo']){ $data['errmsg']='userInfo为空'; $data['error']=1; // $this->response($data,'json'); echo '{"data":'.json_encode($data).'}'; exit; } $userInfo=json_decode($_POST['userInfo'],true); $return=$this->updateSession($code,$userInfo); // $this->response($return,'json'); echo '{"data":'.json_encode($return).'}'; } //刷新session private function updateSession($code,$userInfo){ $return = $this->getOAuth($code); //发送code授权 if(!$return['session_key']){ $data['errmsg'] = 'getOAuth函数报错:'.json_encode($return); $data['error'] = 1; return $data; exit; } $unionid_Data=json_decode($this->getUnionID($return['session_key'],$userInfo),true); /*if(!$unionid_Data['unionId']){ $data['errmsg']='getUnionID函数报错:'.json_encode($unionid_Data); $data['error']=1; return $data; exit; } */ $wei_user_Model=M('user','wei_'); $exist=$wei_user_Model->where(array('openid'=>$return['openid']))->find(); if($exist){ $save=array( // 'unionid'=>$unionid_Data['unionId'], 'session_key'=>$return['session_key'], 'expires_in'=>$return['expires_in'], 'dateline'=>time() ); $is_save=$wei_user_Model->where(array('openid'=>$return['openid']))->data($save)->save(); }else{ $add=array( 'openid'=>$return['openid'], // 'unionid'=>$unionid_Data['unionId'], 'session_key'=>$return['session_key'], 'expires_in'=>$return['expires_in'], 'dateline'=>time() ); $is_add=$wei_user_Model->data($add)->add(); } if($is_save||$is_add){ $wei_user_Data=$wei_user_Model->where(array('openid'=>$return['openid']))->find(); $this->setSession($return['session_key']); $data['session']=session('session'); $data['expires']=time()+$return['expires_in']; $data['error']=0; }else{ $data['errmsg']="入库失败!"; $data['error']=1; } return $data; } //设置session private function setSession($session){ if(!empty($session)){ session('session',$session); } } //发送code授权 private function getOAuth($code){ $url='https://api.weixin.qq.com/sns/jscode2session'; $data=array( 'appid'=>'',//填写你自己的 'secret'=>'',//填写你自己的 'js_code'=>$code, 'grant_type'=>'authorization_code' ); $return=json_decode($this->request_post($url,$data),true); return $return; } //得到unionid 提交sessionKey、userinfo、 private function getUnionID($sessionKey,$userInfo){ if(!$userInfo['encryptedData']){ return 'encryptedData为空'; exit; } if(!$userInfo['iv']){ return 'iv为空'; exit; } vendor('wxBizDataCrypt.wxBizDataCrypt');//引入官方解密sdk $appid = '';//填写你自己的 $encryptedData=$userInfo['encryptedData']; $iv = $userInfo['iv']; $pc = new \WXBizDataCrypt($appid, $sessionKey); $errCode = $pc->decryptData($encryptedData, $iv, $data ); // var_dump($data); if ($errCode == 0) { return $data; } else { return $errCode; } }}
小程序js:
//刷新用户信息 onLoad: function () { wx.login({ success: function(loginRes) { if (loginRes.code) { // console.log('获取code成功!code:' + loginRes.code); wx.getUserInfo({ success: function(userinfoRes) { // console.log('获得用户信息成功!userInfo:'); // console.log(userinfoRes); var userInfoStr = JSON.stringify(userinfoRes); wx.request({ url: '你的url', data: { code: loginRes.code, userInfo: userInfoStr }, header: { 'content-type': 'application/x-www-form-urlencoded' }, method: 'POST', success: function(res) { console.log(res.data); //缓存session及userInfo //var obj = JSON.parse(res.data); if(res.data.error==0){ console.log('刷新缓存成功!'); wx.setStorage({ key:"session", data:{ session:res.data.session, userInfo:userinfoRes.userInfo, expires:res.data.expires //超时时间戳 }, success:function(){ console.log('写入缓存成功!'); }, fail:function(){ console.log('写入缓存失败!'); } }) }else{ console.log('刷新缓存失败!'); console.log(res); } }, fail:function(res){ console.log('刷新session失败!'); console.log(res) } }); }, fail:function(res){ console.log('获取用户信息失败!' + res) } }); }else { console.log('获取用户登录态失败!' + res.errMsg) } } }); }
阅读全文
0 0
- 微信小程序——unionId
- 微信小程序——获取用户unionId
- 微信小程序——获取用户unionId
- 详解微信小程序 登录获取unionid
- 关于微信小程序获取unionid的问题
- 原创:微信小程序java实现AES解密并获取unionId
- 微信小程序java实现AES解密并获取unionId
- 原创:微信小程序java实现AES解密并获取unionId
- 微信小程序之获取并解密用户数据(获取openId、unionId)
- 小程序获取用户unionid的方法
- UnionID机制
- 小程序中关于app.js中用户的调用与获取unionid
- 关于小程序登录时获取openId和unionId走过的坑
- 小程序填坑之路(四):微信登录获取unionid
- 微信号对应UnionID
- 微信UnionID作用
- QQ登录获取unionID
- share sdk WeChat unionid
- Tomcat的文件夹、配置的个人解读。
- 在windows下使用VirtualEnv
- stm32 内部flash
- 虚函数表的实现
- 线段树区间查询区间更新
- 微信小程序——unionId
- IaaS,PaaS,SaaS 的区别
- pydev在Elipse中使用第三方组件时,显示“Undefined variable from import:xxx()"的解决方案
- CCF 无线网络
- Spring整合JUnit4之java.lang.ExceptionInInitializerError
- 界面底部的edittext被弹出的软键盘覆盖的问题解决方法
- nyoj 1248 海岛争霸
- 安卓_解析
- java 创建验证码,图片,可直接运行