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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論