一、openid 和 unionid 是什麼?
- openid:微信小程序的唯一標識碼,就想人的身份證號碼一樣,能在同一主體公衆號下面確定小程序
- unionid:unionid 和 openid 在本質上面是沒有任何區別的。但如果在同一主體公衆號下面有多個小程序的時候,openid是不一樣的,但unionid永遠是一樣的,可以用來判斷是否爲同一個公衆號。
二、怎麼獲取openid
-
首先,想要獲取到 openid,必須要通過調用微信API接口
wx.login
獲取登錄憑證(code)。詳細文檔:wx.login API。 -
其次,在微信公衆號管理平臺生成 AppSecret(小程序密鑰)。
生成路徑:微信公衆號管理平臺 => 開發 => 開發設置 => 開發者ID => AppSecret(小程序密鑰) -
最後,通過得到的 code 和 AppSecret,使用服務端API
auth.code2Session
獲取openid。詳細文檔:服務端API auth.code2Session
獲取openid的兩種方式:
- 方式一:前端自己獲取,不安全,不推薦
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
- 方式二:後臺獲取,安全,推薦使用
調用後臺定義的接口,將 code 和 AppSecret 傳給後臺,後臺調用auth.code2Session
獲取。然後將openid傳回前端即可。
三、獲取微信綁定的手機號
注意:目前該接口針對非個人開發者,且完成了認證的小程序開放(不包含海外主體)。需謹慎使用,若用戶舉報較多或被發現在不必要場景下使用,微信有權永久回收該小程序的該接口權限。
所有,要想使用API獲取手機號,必須有兩個前提條件:
- 小程序主體是不是企業
- 有沒有進行微信認證
否則:將報錯getPhoneNumber:fail Error: 該 appid 沒有權限
小程序在主體是企業性質並且已經認證的情況下,只需要複用主體的認證資質即可,無需審覈,即時通過!!!申請小程序是可選擇,也可在申請後在公衆號小程序管理=》小程序詳情中申請
注意:獲取微信用戶綁定的手機號,需先調用wx.login接口。
四、配置https
注意: 小程序在網絡請求方法只支持 https
協議。
- 開發時,可以關閉 https 校驗,從而使用 http 開發。
關閉路徑:微信開發者工具 => 設置菜單 => 項目設置 => 本地設置 => 勾選不校驗合法域名、web-view(業務域名)、TLS版本以及HTTPS證書
- 上線時,小程序必須配置爲https。
配置流程:
服務器域名請在 「小程序後臺-開發-開發設置-服務器域名」 中進行配置
在微信開發者工具 => 設置菜單 => 項目設置 => 項目配置 => 刷新域名信息
=> 重新編譯即可 - 注意: 請詳細閱讀文檔
必須配置端口,否則正式發佈之後接口會失敗。(開發版,體驗版可能沒有問題)
詳細文檔:網絡配置
五、獲取用戶信息的兩種方法wx.getUserInfo&open-data
- 自從微信接口有了新的調整之後 這個wx.getUserInfo()便不再出現授權彈窗了,需要使用button做引導。官方文檔
- 但是,你僅僅只是想展示用戶信息的話,去使用wx.getUserInfo授權就比較麻煩了,那便使用open-data 吧
<!-- 如果只是展示用戶頭像暱稱,可以使用 <open-data /> 組件 -->
<open-data type="userAvatarUrl"></open-data>
<open-data type="userNickName"></open-data>
<open-data type="userGender" lang="zh_CN"></open-data>
常見報錯解決
一、報錯Unexpected token '...'. Expected a property name.
- 原因:瀏覽器不支持 es6 擴展運算符
pc端chrome沒問題,高版本ios沒問題,測試機有個ios11.2 白屏報錯了,打開錯誤提示爲 Unexpected token ‘…’. Expected a property name. - 解決方案:
- 不用擴展預算符 …
- babel-polyfill 對擴展運算符…支持不是太好,單獨安裝一個 plugin-proposal-object-rest-spread 即可
二、iview組件庫中 i-input 組件在開發者工具中不能輸入值
- 經測試,i-input 組件屬性上帶有 maxlength 屬性的都可以自由輸入內容
- 原因:iview 中並未對i-input 組件的 maxlength 屬性設置默認值
- 解決方式:
在i-input組件對應的index.js
文件下的props
中添加y以下代碼:
maxlength: { //value 的默認值爲 -1,這樣 iView weapp 的 input 組件就默認無限輸入了
type : Number,
value : -1
}
參考文章:微信小程序用iView weapp中input組件開發工具裏無法輸入內容
文章僅爲本人學習過程的一個記錄,僅供參考,如有問題,歡迎指出!