這篇文章主要介紹了微信小程序怎樣實現登錄功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創新互聯建站專注于柯坪網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供柯坪營銷型網站建設,柯坪網站制作、柯坪網頁設計、柯坪網站官網定制、微信小程序開發服務,打造柯坪網絡公司原創品牌,更為您提供柯坪網站排名全網營銷落地服務。微信小程序登錄
一. 小程序不支持cookie會話
1. 通過傳遞與檢驗3rd_session來保持會話
2. 3rd_session可以執行‘`head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 168`該命令生成
3. 使用Redis或者數據庫存儲session
4. 生成的3rd_session發送給客戶端,寫入storage
5. 客戶端的每次請求必須帶上3rd_session
二、加密數據解碼
1. $iv,$code是被加密過的數據,由于請求過程中因為編碼原因+號變成了空格,所以我們需要用下面的方法轉換回來
function define_str_replace($data){ return str_replace(' ','+',$data); }
三、例子:
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'=>'用戶信息獲取失敗!']); } } }
獲取微信信息模型(包括信息解密,官方例子點擊下載)
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]; } }
javascript
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); } }) },
感謝你能夠認真閱讀完這篇文章,希望小編分享的“微信小程序怎樣實現登錄功能”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯建站,關注創新互聯網站建設公司行業資訊頻道,更多相關知識等著你來學習!
另外有需要云服務器可以了解下創新互聯建站m.newbst.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站題目:微信小程序怎樣實現登錄功能-創新互聯
標題URL:http://m.newbst.com/article12/dchegc.html
成都網站建設公司_創新互聯,為您提供微信小程序、域名注冊、搜索引擎優化、品牌網站制作、Google、關鍵詞優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯