1. 程式人生 > 其它 >記錄--微信小程式獲取使用者資訊的最新方法記錄

記錄--微信小程式獲取使用者資訊的最新方法記錄

這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助

微信小程式獲取使用者資訊的幾種方式

以下三種方式都無法獲取到使用者的openID

1. 開放元件獲取使用者資訊<open-data></open-data>該功能已無效

  • 該元件的type屬性根據不同的屬性值可以展示使用者不同的資訊
  • 該方式不需要授權,因為該方式值能獲取到當前登入使用者自己的基礎資訊
  • 但是該方法獲取的使用者資訊只能展示,不可以通過js方法獲取到
  • 元件功能調整 開發者在未獲取使用者明示同意的情況下通過 元件 在小程式中展示使用者個人資訊,使用者容易誤以為自己的個人資訊在未授權的情況下,被小程式獲取。平臺計劃從2022年2月21日24時起回收通過展示個人資訊的能力,若小程式需收集使用者暱稱頭像等資訊,可以通過 頭像暱稱填寫功能 功能進行收集。具體回收方式為:

頭像展示 灰色頭像

使用者暱稱展示“微信使用者”

使用者性別、地區、語言展示為為空(“”)

<open-data type="userAvatarUrl">使用者頭像</open-data>
<open-data type="userNickName">使用者暱稱</open-data>
<open-data type="userCountry">使用者國家</open-data>
<open-data type="userCity">使用者城市</open-data>

2. wx.getUserInfo({})方法

  • 該api只有已經授權過的使用者才會被獲取到資訊,沒有授權過的話呼叫是沒用用的
wx.getUserInfo({
    success: (res)=>{
        console.log(res)
    }
})

3. 配置open-type屬性

  • 該方法可以彈出授權框,授權後可使用上面第二種方法獲取使用者資訊

使用bindgetuserinfo屬性繫結事件,該事件出發後有一個event引數,

<button open-type="getUserInfo"
        bindgetuserinfo="onGetuserinfo">
    獲取使用者資訊
</button>

onGetuserinfo(event){ //
    console.log(event)
},

想要獲取到使用者的openID有兩種方法

1. 傳統的小程式開發

1.  呼叫wx.login方法成功後獲取到code
2.  使用wx.request發起網路請求將code傳遞給後端伺服器
3.  後端會使用code換取到openid和session_key後再返回給前端
onLoad: function(options) {
    wx.login({
      success: function(res) {
        if (res.code) { //如果呼叫wx.login後獲取到code
          //發起網路請求
          wx.request({
            url: '後端介面',
            data: {
              code: res.code
            },
            success: function(res) {
              const self = this
              if (邏輯成功) {
                //獲取到使用者憑證 儲存 3rd_session 
                var json = JSON.parse(res.data.Data)
                wx.setStorage({
                  key: "third_Session",
                  data: json.third_Session
                })
                getUserInfo()
              } else {
 
              }
            },
            fail: function(res) {
 
            }
          })
        }
      },
      fail: function(res) {
 
      }
    })
}

2. 小程式雲開發

建立微信小程式雲開發專案後,雲函式中會自帶一個login雲函式,該雲函式中已經有獲取使用者openid的方法,呼叫該雲函式後會返回當前小程式的appid和openid

wx.cloud.callFunction({
    name: 'login'
}).then((res)=>{
    console.log(res)
})

https://www.niwoxuexi.com/blog/wechat/article/1938

如果對您有所幫助,歡迎您點個關注,我會定時更新技術文件,大家一起討論學習,一起進步。