Taro -- 微信小程序登錄


Taro微信小程序登錄

 

1.調用Taro.login()獲取登錄憑證code;
2.調用Taro.request()將code傳到服務器;
3.服務器端調用微信登錄校驗接口(appid+appsecret+code),獲得session_key+openid;

4.服務器端生成AUTH_TICKET(相當於userId),使用AUTH_TICKET為key,session_key+openid為value的形式存在服務器,並將AUTH_TICKET傳送給客戶端;
5.客戶端本地存儲AUTH_TICKET,登錄成功!
6.下次登錄時可以用AUTH_TICKET傳輸到服務器端驗證登錄態是否過期,未過期則登錄成功。

小程序API中Taro.checkSession()可以校驗用戶當前session_key是否有效。

//檢測sessionkey
    Taro.checkSession({
      success: function() {
        //console.log("session_key 未過期")
        //session_key 未過期,並且在本生命周期一直有效
      },
      fail: function() {
        // session_key 已經失效,需要重新執行登錄流程
        // 登錄
        this.gotologin()
      }
    })

登錄的代碼:

gotologin = () => {
    var that = this
    //清除緩存
    Taro.clearStorageSync()
    // 登錄
    Taro.login({
      success: res => {
        // 發送 res.code 到后台換取 openId, sessionKey, unionId
        if (res.code) {
          //發起網絡請求
          Taro.request({
            url: that.globalData.path + '/miniLogin/login.ajax',
            data: {
              code: res.code
            },
            success: res => {
              let mylogininfo = res.data.data
              if (mylogininfo != null) {
                Taro.setStorageSync('logininfo', mylogininfo)
                console.log(mylogininfo)
                //登錄驗證  拿openid換AUTH_TICKET
                Taro.request({
                  method: 'post',
                  url:
                    that.globalData.path +
                    '/miniLogin/loginCheck.ajax',
                  header: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                  },
                  data: {
                    openid: mylogininfo.openid,
                    unionid: mylogininfo.unionid ? mylogininfo.unionid : '',
                    phoneNo: ''
                  },
                  success: res => {
                    let mdata = res.data
                    if (mdata.code == 200) {
                      Taro.showToast({
                        title: '登錄成功',
                        icon: 'success',
                        duration: 2000
                      })
                      // 存儲AUTH_TICKET
                      Taro.setStorageSync(
                        'AUTH_TICKET',
                        mdata.data.AUTH_TICKET
                      )
                      // 攜帶AUTH_TICKET請求接口,獲取數據
                      Taro.request({
                        method: 'post',
                        url:
                          that.globalData.path + '/comLogin/statffCompany.ajax',
                        header: {
                          'Content-Type': 'application/x-www-form-urlencoded',
                          'weixinauth': mdata.data.AUTH_TICKET
                        },
                        success: function(res) {
                          console.log(res)
                        }
                      })

                    } else if (mdata.code == 400) {
                      //此ID未綁定
                      //獲取手機號碼綁定
                    }
                  }
                })
              } else {
                console.log(res.data)
              }
            }
          })
        } else {
          console.log('登錄失敗!' + res.errMsg)
        }
      }
    })
  }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM