同學們大家好,我是小伊同學,上一節我們介紹了一些常用API,今天我們接着來學習一組API,那就是擷取使用者身份資訊的API。
在微信小程式中,我們往往需要擷取使用者的身份資訊,比如昵稱、頭像、性别、地區等。要得到這些資訊,就需要我們調用擷取使用者資訊的api了。在小程式中,微信非常重視對使用者隐私的保護,是以有很多關于擷取使用者資訊的規範,比如擷取資訊需要使用者授權,這使得我們擷取資訊的api比其他的api要更加複雜。
大家可以打開微信開發者文檔,找到api,在左側列出的所有api中找到開放接口,在其中找到使用者資訊,或者通過這裡的學習連結進行通路,我們可以更細節地了解和學習整個過程。
相信大家都見過右側圖檔中所展示的界面,在使用很多小程式的時候都遇見過。這就是授權的界面,隻有使用者點選允許,我們才能拿到使用者資訊。此外,這個授權是有時效的,即一段時間内不會重複讓你授權很多次。
對于一個需要使用者資訊才能完成需求功能的小程式來說,一般,我們将擷取使用者資訊放在這個小程式所有功能第一步來實作,這樣就可以省去在每次需要使用者資訊的功能開始前都要進行檢查的麻煩,相當于在小程式開始使用之前,就已經準備好了相關的資訊,然後再開始執行小程式。就像大家坐火車或者飛機一樣,在進入車站的時候進行安檢,驗證你的身份。那麼,當你登上火車後,任何乘務員都不會再擔心你的身份,否則,每個乘務員在為你服務的時候都應當首先驗證一下你的身份資訊。
此外,大家可以看到,在我們擷取授權的界面上,微信人性化地提供了拒絕按鈕,那麼,對于拒絕授權的情況,我們也要有相應的處理方法。大家要始終牢記,我們的目标是在小程式開始使用之前,我必須準備好相關的資訊。這就像一道關卡,不合格的人不能開始使用小程式一樣。據此我們可以繪制出整個授權部分的流程圖。
當使用者打開小程式的時候,首先應該檢測是否授權,對于已經授權過了的直接放行,那麼這裡就是調用api擷取資訊,然後開始正常小程式的功能。對于還未授權的,我們則需要調用api進行授權,那麼這裡我們使用了一種簡單的方法,就是擷取後不管結果直接開始和正常進入的流程一樣,因為這時如果已經授權,那麼再次檢查就會通過,如果未授權,那麼還是在這個循環裡,不會向下進行。當然大家也可以采用其他方法,比如判斷授權結果,如果使用者點選了允許,那麼進入調用api擷取資訊的流程中,如果點選了拒絕,那麼重新擷取授權。
對于上述過程,主要涉及到了三部分内容:檢測是否授權,調用api擷取使用者資訊和擷取授權。對于檢測授權這裡,我們使用了擷取小程式設定的api,在成功函數中的回調參數中,實際上有很多權限内容,比如位置資訊、身份資訊等,那麼我們隻檢測使用者資訊這一部分就可以了。這就是if語句的作用,如果條件為真,那麼表明已經授權,可以調用擷取資訊的api了,中間這部分wx.getUserinfo就是擷取使用者資訊的api,此處我們直接一起寫了。這就是兩個api嵌套調用的樣子,通過編譯器自動整理的縮進格式,我們能夠很清楚地看到層次關系。在擷取使用者資訊的api中,我們在成功函數的參數中就能夠讀取到使用者資訊,他存放在userinfo變量中。對于擷取授權的接口,在老版本的基礎庫中是api的格式,但是新版的僅僅支援通過wxml語句的button按鈕來擷取資料,隻要給這個button元件添加open-type屬性,當使用者在頁面點選這個按鈕,就會彈出上一頁ppt中展示的授權對話框了。但是在我們的ui設計中加入一個授權按鈕并不美觀,是以,我們一般建立一個頁面來單獨放置這個button按鈕。根據前面的說明,那這個頁面要添加到所有頁面之前。這個頁面實際上才是小程式的第一個頁面,一般我們也專門用來做路由,主要處理邏輯代碼,比如使用者是掃碼打開小程式的還是分享打開小程式的,我們在這個頁面進行識别,然後分别跳轉不同頁面。那對于本小程式來說,沒有用到那麼多功能,但是大家要清楚這個頁面的作用。當這個頁面完成後,保證所有必要的如使用者資訊等都準備齊全了,就可以分流到小程式内部的幾個頁面上了。否則,當分享或者掃碼打開小程式進入不同頁面時,我都要判斷一下身份資訊,造成代碼的重複,增加了工作量。
那麼,我們都能擷取到哪些使用者資訊呢,在userInfo中有下面這一些字段:nickName:使用者昵稱,avatarUrl:使用者頭像圖檔的 URL,gender:使用者性别,0表示未知,1表示男性,2表示女性,country:使用者所在國家,province:使用者所在省份,city:使用者所在城市,language:顯示 country,province,city 所用的語言,en表示英文,zh_CN表示簡體中文,zh_TW表示繁體中文。其中,隻有gender字段是數字number類型,其餘都為string類型。我們使用userInfo加點再加這幾個屬性的名稱就能夠通路或使用這些資料了。
同學們可以發現,小程式api都比較簡單,形式是固定的。大家認識了他們以後,直接複制過來修改一下甚至有的連修改都不用就可以使用了。的确如此,但是提醒同學們在使用的時候注意弄清邏輯關系,必要的時候可以繪制流程圖來理清思路。
好了,本節課的内容就到這裡,我們明天繼續。如果大家有什麼問題,歡迎在文末留言。
想看視訊版?
關注公号“微程式學堂”,我們的視訊教程即将上線
如果你自己寫了好文章想投稿
請聯系我們