成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

微信小程序怎樣實現(xiàn)登錄功能-創(chuàng)新互聯(lián)

這篇文章主要介紹了微信小程序怎樣實現(xiàn)登錄功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站專注于柯坪網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供柯坪營銷型網(wǎng)站建設(shè),柯坪網(wǎng)站制作、柯坪網(wǎng)頁設(shè)計、柯坪網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造柯坪網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供柯坪網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

微信小程序登錄

一. 小程序不支持cookie會話

1. 通過傳遞與檢驗3rd_session來保持會話

2. 3rd_session可以執(zhí)行‘`head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 168`該命令生成

3. 使用Redis或者數(shù)據(jù)庫存儲session

4. 生成的3rd_session發(fā)送給客戶端,寫入storage

5. 客戶端的每次請求必須帶上3rd_session

二、加密數(shù)據(jù)解碼

1. $iv,$code是被加密過的數(shù)據(jù),由于請求過程中因為編碼原因+號變成了空格,所以我們需要用下面的方法轉(zhuǎn)換回來

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')); //把空格轉(zhuǎn)成+
      $encryptedData=urldecode(I('get.encryptedData'));  //解碼
      $code=define_str_replace(I('get.code')); //把空格轉(zhuǎn)成+
      $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 {
      //調(diào)用登錄接口
      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);
      }
    })
  },

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“微信小程序怎樣實現(xiàn)登錄功能”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:微信小程序怎樣實現(xiàn)登錄功能-創(chuàng)新互聯(lián)
標(biāo)題URL:http://jinyejixie.com/article12/dchegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、域名注冊搜索引擎優(yōu)化、品牌網(wǎng)站制作Google、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
甘孜县| 抚远县| 寿光市| 宁城县| 九寨沟县| 张家川| 黄冈市| 和田县| 临洮县| 建昌县| 宝应县| 莎车县| 南充市| 甘南县| 嵊泗县| 无极县| 蕉岭县| 恭城| 禹城市| 奉化市| 澄迈县| 固阳县| 丰县| 云浮市| 南华县| 铜山县| 鄢陵县| 库车县| 都安| 秀山| 迭部县| 乃东县| 壤塘县| 会东县| 三亚市| 新田县| 郁南县| 祁阳县| 通州市| 吴忠市| 茂名市|