2021年啦,微信小程序最新登錄以及授權(quán)方法解析提陶,給新手小白的~

有的小伙伴在做微信小程序時(shí)突然發(fā)現(xiàn)網(wǎng)上的授權(quán)方法不太統(tǒng)一烫沙,翻看文檔發(fā)現(xiàn),噢隙笆,原來是有改動(dòng)锌蓄!這個(gè)時(shí)候有的友友就很生氣,人家都寫完了怎么說改就改撑柔,還得重新去兼容瘸爽,沒辦法,人在屋檐下不得不低頭铅忿,這里我就把授權(quán)部分整理一下方便大家理解剪决!


一:小程序登錄、用戶信息相關(guān)接口

老規(guī)矩,我們先放個(gè)官方公告康康—>小程序登錄昼捍、用戶信息相關(guān)接口調(diào)整說明
反正就是由于一些不是我們能左右的原因识虚,調(diào)用wx.getUserInfo或<button open-type="getUserInfo"/>以后就不會(huì)再彈出授權(quán)彈窗啦,所以我們?cè)谧龅卿浭跈?quán)的時(shí)候需要進(jìn)行兼容或者直接使用文檔提供的wx.getUserProfile接口妒茬,我把官方提供的demo放在下面担锤,歡迎自取~

1.兼容寫法(文檔在此):

wxml里:

 <view class="userinfo">
    <!-- 這里的hasUserInfo主要是為了判斷用戶是否已經(jīng)授權(quán),如果沒有授權(quán)過就展示獲取頭像昵稱按鈕 -->
    <block wx:if="{{!hasUserInfo}}">
      <!--canIUseGetUserProfile判斷當(dāng)前版本是否支持wx.getUserProfile方法-->
      <button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 獲取頭像昵稱 </button>
      <button wx:else open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 獲取頭像昵稱 </button>
    </block>

    <!--用戶已經(jīng)授權(quán)過直接展示頭像和用戶名乍钻,大家實(shí)際開發(fā)中這里可以換成別的操作-->
    <block wx:else>
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
 </view>

js里:

Page({
  data: {
    userInfo: {},//默認(rèn)為空肛循,但是進(jìn)入頁面我們需要先請(qǐng)求后臺(tái)接口判斷用戶是否已經(jīng)授權(quán)過信息,沒有獲取到的情況下我們需要提醒新用戶授權(quán)
    hasUserInfo: false,//判斷是否展示授權(quán)按鈕/授權(quán)彈窗或者跳到授權(quán)頁面
    canIUseGetUserProfile: false,//是否支持wx.getUserProfile方法
  },
  onLoad() {
    //進(jìn)入頁面判斷是否可以使用wx.getUserProfile
    if (wx.canIUse('getUserProfile')) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },
  getUserProfile(e) {
    // 推薦使用wx.getUserProfile獲取用戶信息银择,開發(fā)者每次通過該接口獲取用戶個(gè)人信息均需用戶確認(rèn)
    // 開發(fā)者妥善保管用戶快速填寫的頭像昵稱多糠,避免重復(fù)彈窗
    wx.getUserProfile({
      desc: '用于完善會(huì)員資料', // 聲明獲取用戶個(gè)人信息后的用途,后續(xù)會(huì)展示在彈窗中浩考,請(qǐng)謹(jǐn)慎填寫
      success: (res) => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  getUserInfo(e) {
    // 不推薦使用getUserInfo獲取用戶信息夹孔,預(yù)計(jì)自2021年4月13日起,getUserInfo將不再彈出彈窗析孽,并直接返回匿名的用戶個(gè)人信息
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
})
2.有的友友說:“我就不想兼容怎么辦搭伤?”,那你就把上面那一堆判斷都給刪了袜瞬,直接
 <button bindtap="getUserProfile"> 獲取頭像昵稱 </button>
 getUserProfile(e) {
    wx.getUserProfile({
      desc: '用于完善會(huì)員資料', 
      success: (res) => {
        this.setData({
          userInfo: res.userInfo
        })
      }
    })
  },

獲取到的userInfo包含:

  • nickName:用戶昵稱
  • gender:性別怜俐,1-男 2-女 0-未知(以后不再返回用戶性別,只返回0)
  • avatarUrl:用戶頭像
  • country:國(guó)家
  • province:省份
  • city:城市
  • language:顯示 country邓尤,province拍鲤,city 所用的語言, en-英文 zh_CN-簡(jiǎn)體中文 zh_TW-繁體中文
    (注意:這里獲取到的國(guó)家省份城市不一定是用戶的真實(shí)地址汞扎,用戶的收貨地址需要用戶手動(dòng)填寫或者調(diào)用wx.chooseAddress季稳,獲取用戶當(dāng)前地理位置需要調(diào)用wx.getLocation)

二:獲取用戶手機(jī)號(hào)

獲取用戶手機(jī)號(hào)需要通過點(diǎn)擊button按鈕來觸發(fā)(文檔),因?yàn)槲覀儷@取到的是加密的信息澈魄,所以我們需要把參數(shù)傳給后臺(tái)進(jìn)行解密绞幌,然后就可以拿到手機(jī)號(hào)了!
wxml里:

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>

js里:

Page({
  getPhoneNumber (e) {
    console.log(e.detail.errMsg)
    console.log(e.detail.iv)//加密算法的初始向量
    console.log(e.detail.encryptedData)//包括敏感數(shù)據(jù)在內(nèi)的完整用戶信息的加密數(shù)據(jù)
  }
})

這是最基本的demo一忱,但是實(shí)際項(xiàng)目中比較繁瑣莲蜘,我直接放js代碼,大家根據(jù)自己的需求修改使用就好啦

 getPhoneNumber: function (e) {
    var that = this;
    //檢查session-key是否過期
    wx.checkSession({
      success() {
        wx.login({
          success: res => {
            wx.request({
              url: '寫你自己的接口地址/' + res.code,
              method: 'GET',
              header: {
                'content-type': 'application/xml'
              },
              success: function (res) {
                if (res.data.code == 200) {
                  //是否允許獲取手機(jī)號(hào)
                  if (e.detail.errMsg == "getPhoneNumber:ok") {
                    //這里是因?yàn)楹笈_(tái)讓我把參數(shù)拼接在url上給他帘营,大家最好用data來傳票渠,別學(xué)我(氣哭)
                    wx.request({
                      url: '寫自己的接口地址?enData=' + e.detail.encryptedData + '&iv=' + e.detail.iv + '&sessionKey=' + res.data.data.session_key,
                      method: "POST",
                      success: function (res) {
                        if (res.data.code == 200) {
                          console.log(res.data.data.phone);
                        }
                      }
                    })
                  }
                }
              }
            })
          }
        })
      }
    })
  },

關(guān)于為啥我要套這么多層,細(xì)心的友友們?cè)谖臋n里會(huì)看到:


覺得有用記得給個(gè)贊芬迄,我寫的不對(duì)的地方請(qǐng)大佬指正问顷,我會(huì)改過來的,over,散會(huì)散會(huì)杜窄,撒花~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肠骆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子塞耕,更是在濱河造成了極大的恐慌蚀腿,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扫外,死亡現(xiàn)場(chǎng)離奇詭異莉钙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)筛谚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門磁玉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人驾讲,你說我怎么就攤上這事蚊伞。” “怎么了吮铭?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵时迫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我沐兵,道長(zhǎng),這世上最難降的妖魔是什么便监? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任扎谎,我火速辦了婚禮,結(jié)果婚禮上烧董,老公的妹妹穿的比我還像新娘毁靶。我一直安慰自己,他們只是感情好逊移,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布预吆。 她就那樣靜靜地躺著,像睡著了一般胳泉。 火紅的嫁衣襯著肌膚如雪拐叉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天扇商,我揣著相機(jī)與錄音凤瘦,去河邊找鬼。 笑死案铺,一個(gè)胖子當(dāng)著我的面吹牛蔬芥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼笔诵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼返吻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乎婿,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤测僵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后次酌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恨课,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年岳服,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剂公。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吊宋,死狀恐怖纲辽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情璃搜,我是刑警寧澤拖吼,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站这吻,受9級(jí)特大地震影響吊档,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜唾糯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一怠硼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧移怯,春花似錦香璃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嵌溢,卻和暖如春眯牧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赖草。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工炸站, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疚顷。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓旱易,卻偏偏與公主長(zhǎng)得像禁偎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阀坏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容