微信開發流程總結(基於微信平臺)

一、openid 和 unionid 是什麼?

  • openid:微信小程序的唯一標識碼,就想人的身份證號碼一樣,能在同一主體公衆號下面確定小程序
  • unionid:unionid 和 openid 在本質上面是沒有任何區別的。但如果在同一主體公衆號下面有多個小程序的時候,openid是不一樣的,但unionid永遠是一樣的,可以用來判斷是否爲同一個公衆號。

二、怎麼獲取openid

  1. 首先,想要獲取到 openid,必須要通過調用微信API接口 wx.login 獲取登錄憑證(code)。詳細文檔:wx.login API

  2. 其次,在微信公衆號管理平臺生成 AppSecret(小程序密鑰)。
    生成路徑:微信公衆號管理平臺 => 開發 => 開發設置 => 開發者ID => AppSecret(小程序密鑰)

  3. 最後,通過得到的 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>

open-data文檔,注意type類型

常見報錯解決

一、報錯Unexpected token '...'. Expected a property name.

  • 原因:瀏覽器不支持 es6 擴展運算符
    pc端chrome沒問題,高版本ios沒問題,測試機有個ios11.2 白屏報錯了,打開錯誤提示爲 Unexpected token ‘…’. Expected a property name.
  • 解決方案:
  1. 不用擴展預算符 …
  2. 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組件開發工具裏無法輸入內容

文章僅爲本人學習過程的一個記錄,僅供參考,如有問題,歡迎指出!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章