中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序怎么調用微信授權窗口

發布時間:2022-04-18 16:06:03 來源:億速云 閱讀:743 作者:iii 欄目:開發技術

本篇內容主要講解“微信小程序怎么調用微信授權窗口”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“微信小程序怎么調用微信授權窗口”吧!

1. 具體實現

app.js的onLaunch()函數中,添加獲取用戶個人信息的代碼段。實現在用戶已經授權的情況(例如第二次打開小程序時)下,自動獲取用戶個人信息,而不需要用戶的授權。

// 獲取用戶信息
wx.getSetting({
  success: res => {
    if (res.authSetting['scope.userInfo']) {
      console.log("app: " + "用戶已經授權")
      // 已經授權,可以直接調用 getUserInfo 獲取頭像昵稱,不會彈框
      wx.getUserInfo({
        success: res => {
          // 可以將 res 發送給后臺解碼出 unionId
          this.globalData.userInfo = res.userInfo
          console.log(this.globalData.userInfo)
          this.globalData.hasUserInfo = true
          // 由于 getUserInfo 是網絡請求,可能會在 Page.onLoad 之后才返回
          // 所以此處加入 callback 以防止這種情況
          if (this.userInfoReadyCallback) {
            this.userInfoReadyCallback(res)
          }
        },
        fail: (res) => {
          console.log("app: " + "獲取用戶信息失敗")
        }
      })
    }else {
      console.log("app: " + "用戶暫時未授權")
    }
  }
})

me.wxml中添加授權按鈕(具體的頁面根據大家的實際情況)。這里的button組件必須按照如下的形式。

<button open-type="getUserInfo" bindgetuserinfo="你自己定義函數"></button>
<block wx:if="{{!hasUserInfo}}">
  <image src='../../images/icon/wechat.png'></image>
  <button open-type="getUserInfo" bindgetuserinfo="getUserInfo">微信授權登錄</button>
</block>

效果這樣,具體的樣式根據大家的喜好更改

微信小程序怎么調用微信授權窗口

me.js中添加如下變量和方法,在用戶之前沒有授權的情況下,需要用戶主動點擊按鈕。

data: {
  userInfo: null,
  hasUserInfo: false
},
getUserInfo: function(e) {
  console.log("me: " + "用戶點擊授權")
  if(e.detail.userInfo){
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
    app.data.userInfo = this.userInfo
    app.data.hasUserInfo = true
  }
}

2. 無法彈出授權窗口

微信小程序怎么調用微信授權窗口

這里一定要注意

授權窗口只會在用戶第一次授權時出現,也就是,只會出現一次!!

在微信小程序開發工具里,需要我們清除所有緩存

微信小程序怎么調用微信授權窗口

3. 已經授權的情況下,不顯示按鈕

由于用戶已經授權的時候,app.js會獲取用戶個人信息(而不是在用戶點擊授權按鈕時獲取),但是這個過程是異步的。

可以看到我們的授權按鈕的出現時根據{{!hasUserInfo}}的真值來判斷,這個值可以通過app.js是否獲取了信息來賦值。

<block wx:if="{{!hasUserInfo}}">
  <image class="userAvatar" src='../../images/icon/wechat.png'></image>
  <button open-type="getUserInfo" bindgetuserinfo="getUserInfo">微信授權登錄</button>
</block>

但是,可能出現用戶已經授權了,但是app.js獲取個人信息時過慢,然而我們的授權按鈕卻錯誤的以為app.js沒有獲取到信息,所以將授權按鈕渲染了出來。

這時,我們希望,在app.js判斷用戶已經授權且獲取到信息后,告訴我們的授權按鈕。

我們在me.js中添加如下代碼段。

onLoad: function() {
  // 獲取個人信息
  if(app.globalData.userInfo){
    this.setData({
      userInfo: app.globalData.userInfo,
      hasUserInfo: true
    })
  }else{
    // 在app.js沒有獲取到信息時,判斷app.js的異步操作是否返回信息
    app.userInfoReadyCallback = res => {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    }
  }
}

為什么這里會有個app.userInfoReadyCallback函數呢,我們注意到在app.js的wx.getSetting里有一段回調函數,這個函數就是用來解決異步的問題。

微信小程序怎么調用微信授權窗口

到此,相信大家對“微信小程序怎么調用微信授權窗口”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新宁县| 张北县| 石屏县| 兰西县| 江川县| 张家口市| 长葛市| 泽普县| 宿迁市| 安阳县| 连州市| 正阳县| 汉寿县| 瓦房店市| 南乐县| 阳曲县| 张家界市| 资溪县| 东辽县| 雷山县| 万载县| 金塔县| 饶平县| 温宿县| 鄢陵县| 连州市| 彰化市| 新巴尔虎左旗| 松阳县| 双流县| 元江| 广灵县| 湘乡市| 崇左市| 台江县| 米泉市| 乌鲁木齐县| 同江市| 泰和县| 锡林浩特市| 巨野县|