uniapp開發(fā)微信小程序登錄的遇到的坑與優(yōu)化方案_第1頁
uniapp開發(fā)微信小程序登錄的遇到的坑與優(yōu)化方案_第2頁
uniapp開發(fā)微信小程序登錄的遇到的坑與優(yōu)化方案_第3頁
uniapp開發(fā)微信小程序登錄的遇到的坑與優(yōu)化方案_第4頁
uniapp開發(fā)微信小程序登錄的遇到的坑與優(yōu)化方案_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

uniapp開發(fā)微信?程序登錄的遇到的坑與優(yōu)化?案坑1、微信已廢棄原有的微信登錄api//獲取?戶信息--已廢棄,返回都是匿名信息//uni.getUserInfo({//provider:platform,//success:infoRes=>{//console.log(infoRes);//}//});新版代碼如下,會出彈框,?戶允許才會獲取,拒絕則不會獲取//允許授權(quán),并獲取?戶信息(改版后)uni.getUserProfile({desc:'?于個?中?展??戶頭像與昵稱',lang:'zh_CN',success:proRes=>{console.log(proRes);}});坑2、微信?程序新版的獲取?戶信息的api必須放在點擊?法的第?步我原來的思路是1、先獲得?產(chǎn)商,因為uni-app可兼容?付寶?程序等各端2、如果?產(chǎn)商是微信?程序(weixin),則調(diào)?微信登錄api3、返回的code,發(fā)到后端,可以請求得到openid4、獲取?戶信息5、把openid與?戶信息綁定,?起發(fā)送到后端注冊登錄但是以下代碼不?效,因為微信的授權(quán)并獲取?戶信息必須放在?法的前?故調(diào)整為以下代碼1、獲取?產(chǎn)商并判斷?產(chǎn)商的代碼去除2、把授權(quán)并獲取?戶信息的代碼放到最上?3、授權(quán)彈窗點允許,再使?登錄api4、得到code,請求后端得到openid5、把?戶信息與openid綁定,發(fā)送到后端注冊ps:我個?不推薦這種寫法,所以?了截圖,原因下?解釋坑3、=>匿名函數(shù)的寫法可以運?,但是會形成層層嵌套,代碼不易讀由于代碼的層層嵌套不易讀,?引出asyncawait和Promise配合使?的寫法沒?過的?伙伴可從此快速?門,獲取你在百度其他的教程便于更深刻的理解有如下?個固定設定:1.認識英?意思:async異步;await等等;promise承諾2.async?于修飾?法,也就是放在?法的前?。如:asyncasyncLogin()3.await修飾語句,?法體?有?await的,該?法?async修飾4.promise固定寫法returnnewPromise((resolve,reject)=>{//代碼邏輯,邏輯?有成功和失敗邏輯判斷//偽代碼如下if(true){resolve(data);//如果成功,返回data}else{reject(errMsg);//如果失敗,返回errMsg}});開始改造代碼1、把=>匿名函數(shù)改成promise//?微信登錄api,得到codepromiseLogin(){returnnewPromise((resolve,reject)=>{//dosomethinghere...uni.login({provider:'weixin',success:login=>{resolve(login.code);//fulfilled}});});},//請求后端得到openidpromiseGetOpenId(code){returnnewPromise((resolve,reject)=>{//dosomethinghere...this.$u.api.userThird({code:code}).then(res=>{letdata=JSON.parse(res.msg);resolve(data.openid);//fulfilled});});},//?戶授權(quán)登錄promiseGetUserProfile(){returnnewPromise((resolve,reject)=>{//dosomethinghere...uni.getUserProfile({desc:'?于完善會員資料',lang:'zh_CN',success:user=>{//得到?戶信息resolve(user.userInfo);},fail:err=>{reject(err.errMsg);}});});},2、?asyncawait把邏輯串起來asyncasyncLogin(){//允許授權(quán),得到?戶頭像昵稱constuserInfo=miseGetUserProfile();//得到openidconstgetOpenIdcode=miseLogin();constopenid=miseGetOpenId(getOpenIdcode);//?戶頭像昵稱與openid綁定userInfo['openid']=openid;//發(fā)起注冊或登錄constres=awaitthis.$u.api.weixinRegister(userInfo);//緩存登錄信息uni.setStorageSync('userinfo',res.userinfo);//展?最新的?戶信息this.flashLoginInfo();},3、html調(diào)??法asycnLogin()?法<viewclass="loginBtn"@tap="asyncLogin"><viewclass="item"><imagemode="widthFix"src="/static/idol/wechatIcon.png"alt="微信授權(quán)圖標"></image></view><viewclass="item">微信登錄</view></view>總結(jié):微信?程序的注冊登錄流程1.允許授權(quán),得到?戶頭像昵稱,等?戶信息2.微信登錄uni.login,得到code3.那code請求后端,后端請求微信服務器,拿到openid4.拿openid與?戶信息請求注冊接?5.返回token與?戶信息6.把?戶

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論