Dieser Artikel enthält hauptsächlich relevante Informationen zur detaillierten Erklärung von WeChat-Applet-Anmeldebeispielen. Freunde, die sie benötigen, können darauf verweisen
WeChat-Applet-Anmeldung
1. Das Miniprogramm unterstützt keine CookieSitzung
1. Behalten Sie die Sitzung bei, indem Sie 3rd_Sitzung
bestehen und markieren 2 . 3rd_session kann „head -n 80 /dev/urandom |. tr -dc A-Za-z0-9 |“ ausführen. Dieser Befehl generiert
3. Verwenden Sie Redis oder Datenbankspeichersitzung
4. Die generierte 3rd_session wird an den Client gesendet und in den Speicher geschrieben
5. Jede Anfrage des Clients muss 3rd_session bringen
2. Dekodierung verschlüsselter Daten
1. $iv, $code sind verschlüsselte Daten, da das +-Zeichen während des Anfragevorgangs zu einem Leerzeichen wird folgende Methodenkonvertierung zurück
function define_str_replace($data){ return str_replace(' ','+',$data); }
3. Beispiel:
php
// 微信登录 public function weixin_login(){ $session_db=D('Session'); $session_id=I('get.sessionid',''); $session=$session_db->getSession($session_id); if( !empty( $session ) ){ $this->ajaxReturn(['error_code'=>0,'sessionid'=>$session_id]); }else{ $iv=define_str_replace(I('get.iv')); //把空格转成+ $encryptedData=urldecode(I('get.encryptedData')); //解码 $code=define_str_replace(I('get.code')); //把空格转成+ $msg=D('Weixin')->getUserInfo($code,$encryptedData,$iv); //获取微信用户信息(openid) if($msg['errCode']==0){ $open_id=$msg['data']->openId; $users_db=D('Users'); $info=$users_db->getUserInfo($open_id); if(!$info||empty($info)){ $users_db->addUser(['open_id'=>$open_id,'last_time'=>['exp','now()']]); //用户信息入库 $info=$users_db->getUserInfo($open_id); //获取用户信息 $session_id=`head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 168`; //生成3rd_session $session_db->addSession(['uid'=>$info['id'],'id'=>$session_id]); //保存session } if($session_id){ $this->ajaxReturn(['error_code'=>0,'sessionid'=>$session_id]); //把3rd_session返回给客户端 }else{ $this->ajaxReturn(['error_code'=>0,'sessionid'=>$session_db->getSid($info['id'])]); } }else{ $this->ajaxReturn(['error_code'=>'用户信息获取失败!']); } } }
WeChat-Informationen abrufenModell ( einschließlich Informationsentschlüsselung, offizielles Beispiel zum Herunterladen klicken)
require_once ABS_APP_PATH.'/Addon/Aes/wxBizDataCrypt.php'; class WeixinModel{ // 获取微信的用户信息(openid) public function getUserInfo($code,$encryptedData,$iv){ $appid=C('appid'); $secret=C('secret'); $grant_type='authorization_code'; $url='https://api.weixin.qq.com/sns/jscode2session'; $url= sprintf("%s?appid=%s&secret=%s&js_code=%s&grant_type=%",$url,$appid,$secret,$code,$grant_type); $user_data=json_decode(file_get_contents($url)); $session_key= define_str_replace($user_data->session_key); $data=""; $wxBizDataCrypt=new \WXBizDataCrypt($appid,$session_key); $errCode=$wxBizDataCrypt->decryptData($encryptedData,$iv,$data); return ['errCode'=>$errCode,'data'=>json_decode($data),'session_key'=>$session_key]; } }
getUserInfo: function(cb) { var that = this if (this.globalData.userInfo) { typeof cb == "function" && cb(this.globalData.userInfo) } else { //调用登录接口 wx.login({ success: function(r) { wx.getUserInfo({ success: function(res) { that.login({ code: r.code, iv: res.iv, encryptedData: encodeURIComponent(res.encryptedData), }) that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) } }) } }) } }, login: function(param) { wx.request({ url: this.requestUrl('Index/weixin_login'), data: param, header: { 'content-type': "application/json", }, success: function(res) { var data = JSON.parse(res.data.trim()); wx.setStorageSync('sessionid', data.sessionid); } }) },
Vielen Dank fürs Lesen, ich hoffe, es kann allen helfen, vielen Dank für Ihre Unterstützung dieser Seite!
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Anmeldebeispiels des WeChat-Applets (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!