欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

小程序(五)小程序登錄、注冊 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關(guān) >

小程序(五)小程序登錄、注冊

發(fā)表時間:2020-9-28

發(fā)布人:葵宇科技

瀏覽次數(shù):50

小程序理論上和VUE是差不多的,我在做VUE的登錄注冊的時候,用戶信息使用服務(wù)器端的session存了一份,還使用前端的緩存存了一份。小程序這邊我可能不需要這么麻煩,只用小程序的緩存將用戶信息存一份大概就可以了。

我這里大概是這樣實現(xiàn)。

首先,在你創(chuàng)建小程序的時候,示例就會告訴你小程序的登錄是在app.js的onlaunch中實現(xiàn)的,在小程序的生命周期中,我們了解onlaunch全局只調(diào)用一次。

因此,小程序的登錄也是在小程序生成結(jié)束之后,只調(diào)用一次,而且這個玩意,他是在后臺進行的,不會彈窗。這就很完美了。

我這里大概是這么實現(xiàn)的

首先放一張官方的圖:

在這里插入圖片描述

其實大概流程就是:

1:小程序前端通過調(diào)用wx.login方法獲取code

2:將code傳回服務(wù)器

3:服務(wù)器端通過小程序appid,appsecert,以及剛剛獲取的code,請求微信服務(wù)接口,獲取當前用戶唯一信息(openid,sessionkey):

4:如果數(shù)據(jù)庫中有匹配當前openid的信息,執(zhí)行登錄操作(將數(shù)據(jù)庫中的信息返回小程序前端)如果數(shù)據(jù)庫中沒有匹配當前openid的信息,執(zhí)行注冊操作(將剛才返回的信息寫入數(shù)據(jù)庫)

5:將后端返回的信息存儲至小程序緩存storage中。

登錄的基本流程應(yīng)該就是這樣。當然,這其中可能還有你自己特定的業(yè)務(wù)流程。這里不做體現(xiàn)。

下邊我這里大概放一下我的代碼:

App.js中的代碼:

/**
   * @name 小程序初始化時觸發(fā),全局只觸發(fā)一次
   */
 >: function () {
    // 登錄
    wx.login({
      success (res) {
        if (res.code) {
          //發(fā)起網(wǎng)絡(luò)請求
          wx.request({
            // 請求連接
            url: 'https://guanchao.site/ ',
            // 請求所需要的的參數(shù)
            data: {
              code: res.code
            },
            // 請求成功之后,將信息存儲至storage 中
            success(data){
              // 將返回信息存儲至storage中
              wx.setStorage({
                key:"userinfo",
                data:data
              });
              // 從storage中獲取用戶信息
              /*wx.getStorage({
                key: 'userinfo',
                success (res) {
                  console.log(res.data)
                }
              })//*/
            }
          });
        } else {
          console.log('登錄失敗!' + res.errMsg)
        }//*/
      }
    });
  
  },

服務(wù)器端PHP代碼:

/**
     * @name 獲取微信用戶信息并執(zhí)行登錄/注冊
     * @date 20200628
     * @author camellia
     */
    public function getWeiXinUserInfo()
    {
        // 獲取臨時登錄code
        $code = input('code');
        // 請求微信接口,獲取openid等其他信息
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$this->appid."&secret=". $this->appSecret."&js_code=".$code."&grant_type=authorization_code";
        // 使用file_get_content函數(shù)獲取接口返回信息
        $info  = file_get_contents($url);
        // curl 獲取微信用戶信息。
        /*$curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 500);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_URL, $url);
        $res = curl_exec($curl);
        curl_close($curl);//*/
        // 這里是獲取到的信息,解析json
        $userinfo = json_decode($info);
        // 獲取openid
        $open_id = $userinfo->openid;
        // 獲取session_key
        $session_key = $userinfo->session_key;
        $time = date('Y-m-d H:i:s',time());
        // 查詢用戶信息,根據(jù)openid
        $user = db('user');
        $userinfo = $user->where("mini_openid = '{$open_id}'")->find();
        // 如果用戶信息有值,說明該用戶注冊過了
        if(!isset($userinfo['id']))
        {
            // 將用戶信息寫入數(shù)據(jù)庫
            $res = Db::execute("INSERT INTO user (mini_openid,regtime,session_key)
                    VALUES ('{$open_id}','{$time}','{$session_key}')");
        }
        else
        {
            // 將用戶信息更新數(shù)據(jù)庫
            $res = Db::execute("UPDATE user SET session_key = '{$session_key}' WHERE id = '{$userinfo['id']}'");
        }
        if($res <= 0)
        {
            $userinfo['code'] = -1;
        }
        else
        {
            $userinfo['code'] = 1;
        }
        $userinfo['mini_openid'] = $open_id;
        $userinfo['session_key'] = $session_key;
        $result = json_encode($userinfo);
        return $result;
    }

注意,以上的代碼只是完成了登錄,而并沒有獲取用戶信息(我這里的用戶信息包括頭像,昵稱等)也沒有獲取當前用戶注冊微信所用的電話號。這個以后會有說明

我這里的登錄和注冊只是將獲取到的用戶的唯一標識openid以及session_key寫入到了數(shù)據(jù)庫中。

大概就是這樣

有好的建議,請在下方輸入你的評論。

歡迎訪問我的小程序:
在這里插入圖片描述

相關(guān)案例查看更多