From 3e9dccdf68459d4408fe685d08a881a9bf3044a6 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 23 Dec 2023 22:53:55 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=BE=AE=E4=BF=A1=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=EF=BC=9A=E6=8E=A5=E5=85=A5=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sheep/platform/provider/wechat/miniProgram.js | 99 +++++++++---------- 1 file changed, 48 insertions(+), 51 deletions(-) diff --git a/sheep/platform/provider/wechat/miniProgram.js b/sheep/platform/provider/wechat/miniProgram.js index 7bfd8941..322d5b22 100644 --- a/sheep/platform/provider/wechat/miniProgram.js +++ b/sheep/platform/provider/wechat/miniProgram.js @@ -23,7 +23,6 @@ const login = async () => { // 2. 社交登录 const loginResult = await AuthUtil.socialLogin(socialType, codeResult.code, 'default'); - debugger if (loginResult.code === 0) { setOpenid(loginResult.data.openid); return resolve(true); @@ -36,7 +35,6 @@ const login = async () => { // 微信小程序手机号授权登陆 const mobileLogin = async (e) => { return new Promise(async (resolve, reject) => { - console.log(e.errMsg) if (e.errMsg !== 'getPhoneNumber:ok') { return resolve(false); } @@ -48,7 +46,6 @@ const mobileLogin = async (e) => { } // 2. 一键登录 - debugger const loginResult = await AuthUtil.weixinMiniAppLogin(e.code, codeResult.code, 'default'); if (loginResult.code === 0) { setOpenid(loginResult.data.openid); @@ -63,21 +60,19 @@ const mobileLogin = async (e) => { // 微信小程序绑定 const bind = () => { return new Promise(async (resolve, reject) => { - const loginRes = await third.wechat.bind({ - platform: 'miniProgram', - payload: encodeURIComponent( - JSON.stringify({ - sessionId: uni.getStorageSync('sessionId'), - }), - ), - }); + // 1. 获得微信 code + const codeResult = await uni.login(); + if (codeResult.errMsg !== 'login:ok') { + return resolve(false); + } - if (loginRes.error === -1) { - getSessionId(false); - } else if (loginRes.error === 0) { - resolve(true); + // 2. 绑定账号 + const bindResult = await SocialApi.socialBind(socialType, codeResult.code, 'default'); + if (bindResult.code === 0) { + setOpenid(bindResult.data); + return resolve(true); } else { - reject(false); + return resolve(false); } }); }; @@ -88,6 +83,43 @@ const unbind = async (openid) => { return code === 0; }; +// 绑定用户手机号 +const bindUserPhoneNumber = (e) => { + return new Promise(async (resolve, reject) => { + const { error } = await third.wechat.bindUserPhoneNumber({ + platform: 'miniProgram', + payload: encodeURIComponent( + JSON.stringify({ + sessionId: uni.getStorageSync('sessionId'), + iv: e.iv, + encryptedData: e.encryptedData, + code: e.code, + }), + ), + }); + if (error === 0) { + resolve(true); + } + resolve(false); + }); +}; + +// 设置 openid 到本地存储,目前只有 pay 支付时会使用 +function setOpenid(openid) { + uni.setStorageSync('openid', openid); +} + +// 获得社交信息 +async function getInfo() { + const { code, data } = await SocialApi.getSocialUser(socialType); + if (code !== 0) { + return undefined; + } + return data; +} + +// ========== 非登录相关的逻辑 ========== + // 小程序更新 const checkUpdate = async (silence = true) => { if (uni.canIUse('getUpdateManager')) { @@ -126,27 +158,6 @@ const checkUpdate = async (silence = true) => { } }; -// 绑定用户手机号 -const bindUserPhoneNumber = (e) => { - return new Promise(async (resolve, reject) => { - const { error } = await third.wechat.bindUserPhoneNumber({ - platform: 'miniProgram', - payload: encodeURIComponent( - JSON.stringify({ - sessionId: uni.getStorageSync('sessionId'), - iv: e.iv, - encryptedData: e.encryptedData, - code: e.code, - }), - ), - }); - if (error === 0) { - resolve(true); - } - resolve(false); - }); -}; - // 获取订阅消息模板 async function getSubscribeTemplate() { const { error, data } = await third.wechat.subscribeTemplate(); @@ -176,20 +187,6 @@ function subscribeMessage(event) { }); } -// 设置 openid 到本地存储,目前只有 pay 支付时会使用 -function setOpenid(openid) { - uni.setStorageSync('openid', openid); -} - -// 获得社交信息 -async function getInfo() { - const { code, data } = await SocialApi.getSocialUser(socialType); - if (code !== 0) { - return undefined; - } - return data; -} - export default { load, login,