微信小程式手機號登入

心动12138發表於2024-11-18
import { wxPhoneLogin, getPhoneNumber } from '../login'
// 後端介面
// 服務端介面 - 獲取openid
function queryOpenIdFn(code) {
  return new Promise((resolve) => {
    wxPhoneLogin({
      code,
    })
      .then((res: any) => {
        if (res.code == 0) {
          console.log('獲取openid失敗1', res.msg)
          return
        }
        uni.setStorageSync('openId', res.data.openid)
        resolve(res.data)
      })
      .catch((err) => {
        console.log('獲取openid失敗2', err)
      })
  })
}

// 服務端介面 - 獲取手機號
function getPhoneNumberFn(phoneCode, openId) {
  return new Promise((resolve) => {
    getPhoneNumber({
      code: phoneCode,
      openId,
    })
      .then((res) => {
        if (res.code == 0) {
          console.log('獲取手機號失敗1:', res.msg)
          return
        }
        resolve(res)
      })
      .catch((err) => {
        console.log('獲取手機號失敗2:', err)
      })
  })
}

// 微信api : 微信登入
function loginFn() {
  return new Promise((resolve, reject) => {
    uni.login({
      success: async (res) => {
        queryOpenIdFn(res.code).then((res) => {
          resolve(res)
        })
      },
      fail: (err) => {
        console.log('login fail:', err)
      },
    })
  })
}

export { loginFn, getPhoneNumberFn }

介面呼叫

 loginFn().then((res: any) => {
    // 微信登入&服務端獲取openid
    console.log(res, '介面換取的openid')
    console.log('獲取手機號的動態令牌:', e.detail.code) // 動態令牌
    getPhoneNumberFn(e.detail.code, res.openid).then((res2: any) => {
      // 服務端獲取手機號
      console.log(555, res2)
      if (res2.code == 1) {
        userStore.setUserInfs(res2.data?.userinfo)
        uni.setStorageSync('token', res2.data.userinfo.token)
        gonswi('/pages/index/index')
      }
    })

})
 

新建 login.ts

相關文章