内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

小程序開發(fā)中怎么實現(xiàn)登錄功能

小編給大家分享一下小程序開發(fā)中怎么實現(xiàn)登錄功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)由有經(jīng)驗的網(wǎng)站設(shè)計師、開發(fā)人員和項目經(jīng)理組成的專業(yè)建站團(tuán)隊,負(fù)責(zé)網(wǎng)站視覺設(shè)計、用戶體驗優(yōu)化、交互設(shè)計和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都做網(wǎng)站、網(wǎng)站制作易于使用并且具有良好的響應(yīng)性。

微信小程序登錄
一. 小程序不支持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'=>'用戶信息獲取失??!']);
     }
      
   }
 }


獲取微信信息模型(包括信息解密,官方例子點(diǎn)擊下載)

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);
      }
    })
  },

以上是“小程序開發(fā)中怎么實現(xiàn)登錄功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享文章:小程序開發(fā)中怎么實現(xiàn)登錄功能
轉(zhuǎn)載源于:http://www.rwnh.cn/article8/gjhgip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、企業(yè)網(wǎng)站制作、服務(wù)器托管外貿(mào)建站、域名注冊、App設(shè)計

廣告

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

網(wǎng)站托管運(yùn)營
天柱县| 亚东县| 平陆县| 兰西县| 高唐县| 青浦区| 乌恰县| 古丈县| 新龙县| 阿图什市| 如皋市| 大安市| 永平县| 新兴县| 海淀区| 金阳县| 小金县| 龙井市| 专栏| 嘉义市| 博白县| 南昌县| 扬中市| 湘阴县| 怀安县| 金寨县| 昂仁县| 巧家县| 三穗县| 印江| 武安市| 安吉县| 商都县| 莎车县| 石渠县| 建瓯市| 旬邑县| 兴仁县| 中西区| 麻江县| 封丘县|