小程序登陆

前端之家收集整理的这篇文章主要介绍了小程序登陆前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

app.js

/**
   * 当小程序启动,或从后台进入前台显示,会触发 onShow
   */
  onShow: function (options) {
    this.getUserInfo();
  },/**
   * 获取用户信息
   */
  getUserInfo: function (cb) {

    var that = this

    if (that.globalData.userInfo) {

      typeof cb == "function" && cb(that.globalData.userInfo)

    } else {

      wx.login({
        success: function (res) {
          var code = res.code
          wx.getUserInfo({
            success: function (res2) {
              that.globalData.userInfo = res2.userInfo
              var data = {encryptedData: res2.encryptedData,iv: res2.iv,code: code}
              // 存储用户信息
              util.commonAjax(/recentimgtext/saveuser,POST,data).then(function (resolve) {
                if (resolve.data.status === 200) {
                  wx.setStorageSync(userInfo,resolve.data.data)
                  typeof cb == "function" && cb(that.globalData.userInfo)
                } else {
                  console.log(用户信息存储失败);
                }
              })
            },fail: function (res2) {
              wx.navigateTo({
                url: /pages/login/login,})
            }
          })
        }
      })
    }
  },/**
   * 全局数据
   */
  globalData: {
    userInfo: null,url: http://ci.test.com,// url: ‘http://ci.mag998.com‘,
  }

utils.js

// 访问数据
const commonAjax = function (url,types,data) {
  var app = getApp();
  var promise = new Promise(function(resolve,reject,defaults) {
    wx.request({
      url: app.globalData.url + url,data: data,method: (types === GET) ? GET : POST,header: (types === GET) ? {content-type: application/json} : {content-type: application/x-www-form-urlencoded},success: resolve,fail: reject,complete: defaults,})
  })
  return promise;
}

module.exports = {
  formatTime: formatTime,commonAjax: commonAjax
}

login.wxml

<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo" type=primary style=margin-top:50px;width:80%;> 微信登陆 </button>

login.js

// pages/login/login.js
const app = getApp()
Page({

  data: {
    hasUserInfo: app.globalData.userInfo,canIUse: wx.canIUse(button.open-type.getUserInfo),},getUserInfo (e) {
    // 防止getUserInfo数据未及时返回
    app.globalData.userInfo = e.detail.userInfo
    
    wx.navigateBack({
      delta: 1
    })
  }

})

saveuser控制器

// 存储用户信息
    public function saveuser()
    {
        $encryptedData = $this->input->post(encryptedData);
        $iv = $this->input->post(iv);

        $code = $this->input->post(code);
        $url = https://api.weixin.qq.com/sns/jscode2session?appid= . RECENT_IMGTEXT_APPID . &secret= . RECENT_IMGTEXT_APPSECRET . &js_code= . $code . &grant_type=authorization_code;
        $data = send_get($url);
        $sessionKey = json_decode($data)->session_key;

        $pc = new WXBizDataCrypt(RECENT_IMGTEXT_APPID,$sessionKey);
        $errCode = $pc->decryptData($encryptedData,$iv,$data); // $data为用户信息

        $message = $errCode;
        $status = 0;

        if ($errCode == 0) {

            $userinfo = json_decode($data,true);
            $openid = $userinfo[openId];
            unset($userinfo[watermark]);
            $checkuser = $this->db->get_where($this->recent_user_table,[openId => $openid])->row_array();
            if (empty($checkuser)) {
                $userinfo[created_at] = date("Y-m-d H:i:s");
                if ($this->db->insert($this->recent_user_table,$userinfo));
                $message = 添加成功;
                $status = 200;
            } else {
                unset($userinfo[openId]);
                $userinfo[updated_at] = date("Y-m-d H:i:s");
                if ($this->db->update($this->recent_user_table,$userinfo,openId = " . $openid . "));
                $message = 更新成功;
                $status = 200;
            }
        }
        echo json_encode([data => $data,message => $message,status => $status]);
    }

猜你在找的XML相关文章