feat: 做了适配手机端的条件编译的
This commit is contained in:
@@ -69,18 +69,41 @@ export const checkToken = () => {
|
|||||||
|
|
||||||
// 刷新token
|
// 刷新token
|
||||||
export const refreshToken = () => {
|
export const refreshToken = () => {
|
||||||
|
let provider = "weixin";
|
||||||
|
let grant_type = "wechat";
|
||||||
|
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
const systemInfo = uni.getSystemInfoSync();
|
||||||
|
if (systemInfo.platform === "ios") {
|
||||||
|
provider = "apple";
|
||||||
|
grant_type = "apple";
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
uni.login({
|
uni.login({
|
||||||
provider: "weixin", //使用微信登录
|
provider,
|
||||||
success: async ({ code }) => {
|
success: async (loginRes) => {
|
||||||
console.log("进入 refreshToken success", code);
|
console.log("refreshToken success: ", JSON.stringify(loginRes));
|
||||||
|
const openIdCode =
|
||||||
|
provider === "apple"
|
||||||
|
? loginRes.appleInfo && loginRes.appleInfo.identityToken
|
||||||
|
: loginRes.code;
|
||||||
|
console.log("获取到的授权code:", openIdCode);
|
||||||
|
|
||||||
|
if (!openIdCode) {
|
||||||
|
console.warn("refreshToken 未获取到登录 code");
|
||||||
|
resolve(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const params = {
|
const params = {
|
||||||
openIdCode: [code],
|
openIdCode: [openIdCode],
|
||||||
grant_type: "wechat",
|
grant_type: grant_type,
|
||||||
scope: "server",
|
|
||||||
clientId: clientId,
|
clientId: clientId,
|
||||||
|
scope: "server",
|
||||||
};
|
};
|
||||||
console.log("获取到的微信授权params:", JSON.stringify(params));
|
console.log("获取到的授权params:", JSON.stringify(params));
|
||||||
|
|
||||||
const response = await oauthToken(params);
|
const response = await oauthToken(params);
|
||||||
if (response.access_token) {
|
if (response.access_token) {
|
||||||
@@ -89,7 +112,6 @@ export const refreshToken = () => {
|
|||||||
const checkRes = await checkUserPhone({
|
const checkRes = await checkUserPhone({
|
||||||
token: response.access_token,
|
token: response.access_token,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (checkRes.data) {
|
if (checkRes.data) {
|
||||||
// 登录成功后,触发登录成功事件
|
// 登录成功后,触发登录成功事件
|
||||||
uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS);
|
uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS);
|
||||||
@@ -99,6 +121,10 @@ export const refreshToken = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
console.warn("refreshToken uni.login fail:", err);
|
||||||
|
resolve(true);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ export function createApp() {
|
|||||||
|
|
||||||
pinia.use(createUnistorage());
|
pinia.use(createUnistorage());
|
||||||
app.use(pinia);
|
app.use(pinia);
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
app.use(share);
|
app.use(share);
|
||||||
|
// #endif
|
||||||
|
|
||||||
return {
|
return {
|
||||||
app,
|
app,
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
export const getWeChatAuthCode = (e) => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
// 条件编译微信小程序、抖音小程序
|
|
||||||
let provider = "";
|
|
||||||
// #ifdef MP-WEIXIN
|
|
||||||
provider = "weixin";
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// #ifdef MP-TOUTIAO
|
|
||||||
provider = "toutiao";
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
// 判断用户拒绝授权
|
|
||||||
if (
|
|
||||||
e !== undefined &&
|
|
||||||
e.detail.errMsg === "getPhoneNumber:fail user deny"
|
|
||||||
) {
|
|
||||||
reject();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
uni.login({
|
|
||||||
provider,
|
|
||||||
onlyAuthorize: true,
|
|
||||||
success: (res) => resolve(res.code),
|
|
||||||
fail: (err) => reject(err),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
import { oauthToken, bindUserPhone } from "../request/api/LoginApi";
|
import { oauthToken, bindUserPhone } from "../request/api/LoginApi";
|
||||||
import { getWeChatAuthCode } from "./AuthManager";
|
|
||||||
import { clientId } from "@/constant/base";
|
import { clientId } from "@/constant/base";
|
||||||
import { NOTICE_EVENT_LOGIN_SUCCESS } from "@/constant/constant";
|
import { NOTICE_EVENT_LOGIN_SUCCESS } from "@/constant/constant";
|
||||||
import { removeAccessToken, setAccessToken } from "../constant/token";
|
import { removeAccessToken, setAccessToken } from "../constant/token";
|
||||||
@@ -7,25 +6,66 @@ import { removeAccessToken, setAccessToken } from "../constant/token";
|
|||||||
const loginAuth = (e) => {
|
const loginAuth = (e) => {
|
||||||
removeAccessToken();
|
removeAccessToken();
|
||||||
|
|
||||||
return new Promise(async (resolve, reject) => {
|
// 条件编译微信小程序、抖音小程序、APP-PLUS(包含iOS和Android)
|
||||||
const openIdCode = await getWeChatAuthCode(e);
|
let provider = "weixin";
|
||||||
console.log("获取到的微信授权code:", openIdCode);
|
let grant_type = "wechat";
|
||||||
const params = {
|
|
||||||
openIdCode: [openIdCode],
|
|
||||||
grant_type: "wechat",
|
|
||||||
scope: "server",
|
|
||||||
clientId: clientId,
|
|
||||||
};
|
|
||||||
console.log("获取到的微信授权params:", JSON.stringify(params));
|
|
||||||
const response = await oauthToken(params);
|
|
||||||
console.log("获取到的微信授权response:", response);
|
|
||||||
|
|
||||||
if (response.access_token) {
|
// #ifdef MP-WEIXIN
|
||||||
setAccessToken(response.access_token);
|
provider = "weixin";
|
||||||
resolve();
|
grant_type = "wechat";
|
||||||
} else {
|
// #endif
|
||||||
reject(response.message || "登录失败");
|
|
||||||
}
|
// #ifdef MP-TOUTIAO
|
||||||
|
provider = "toutiao";
|
||||||
|
grant_type = "toutiao";
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
const systemInfo = uni.getSystemInfoSync();
|
||||||
|
if (systemInfo.platform === "ios") {
|
||||||
|
provider = "apple";
|
||||||
|
grant_type = "apple";
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
return new Promise(async (resolve, reject) => {
|
||||||
|
uni.login({
|
||||||
|
provider,
|
||||||
|
onlyAuthorize: true,
|
||||||
|
success: async (loginRes) => {
|
||||||
|
console.log("Authorize success: ", JSON.stringify(loginRes));
|
||||||
|
const openIdCode =
|
||||||
|
provider === "apple"
|
||||||
|
? loginRes.appleInfo && loginRes.appleInfo.identityToken
|
||||||
|
: loginRes.code;
|
||||||
|
console.log("获取到的授权code:", openIdCode);
|
||||||
|
|
||||||
|
if (!openIdCode) {
|
||||||
|
console.warn("refreshToken 未获取到登录 code");
|
||||||
|
reject("refreshToken 未获取到登录 code");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
openIdCode: [openIdCode],
|
||||||
|
grant_type: grant_type,
|
||||||
|
clientId: clientId,
|
||||||
|
scope: "server",
|
||||||
|
};
|
||||||
|
console.log("获取到的授权params:", JSON.stringify(params));
|
||||||
|
|
||||||
|
const response = await oauthToken(params);
|
||||||
|
if (response.access_token) {
|
||||||
|
setAccessToken(response.access_token);
|
||||||
|
resolve();
|
||||||
|
} else {
|
||||||
|
reject(response.message || "登录失败");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail: (err) => {
|
||||||
|
reject("登录失败");
|
||||||
|
},
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -34,7 +74,7 @@ const bindPhone = async (params) => {
|
|||||||
const response = await bindUserPhone(params);
|
const response = await bindUserPhone(params);
|
||||||
return response;
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw err;
|
throw error;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ import DrawerSection from "../DrawerSection/index.vue";
|
|||||||
import Calender from "@/components/Calender/index.vue";
|
import Calender from "@/components/Calender/index.vue";
|
||||||
|
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
const locationStore = useLocationStore();
|
|
||||||
const calendarVisible = ref(false);
|
const calendarVisible = ref(false);
|
||||||
const selectedDate = ref("");
|
const selectedDate = ref("");
|
||||||
|
|
||||||
|
|||||||
@@ -28,11 +28,17 @@
|
|||||||
<!-- 按钮区域 -->
|
<!-- 按钮区域 -->
|
||||||
<view class="login-btn-area">
|
<view class="login-btn-area">
|
||||||
<!-- 同意隐私协议并获取手机号按钮 -->
|
<!-- 同意隐私协议并获取手机号按钮 -->
|
||||||
<button v-if="needWxAuthLogin" class="login-btn" type="primary" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
|
<button
|
||||||
手机号快捷登录
|
v-if="needWxAuthLogin && !isAppleLogin"
|
||||||
|
class="login-btn"
|
||||||
|
type="primary"
|
||||||
|
open-type="getPhoneNumber"
|
||||||
|
@getphonenumber="getPhoneNumber"
|
||||||
|
>
|
||||||
|
{{ loginButtonText }}
|
||||||
</button>
|
</button>
|
||||||
<button v-else class="login-btn" type="primary" @click="handleAgreeAndGetPhone">
|
<button v-else class="login-btn" type="primary" @click="handleAgreeAndGetPhone">
|
||||||
手机号快捷登录
|
{{ loginButtonText }}
|
||||||
</button>
|
</button>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@@ -62,11 +68,20 @@ const privacyAgreement = ref("");
|
|||||||
// 协议类型
|
// 协议类型
|
||||||
const AgreeType = ref("service");
|
const AgreeType = ref("service");
|
||||||
const logo = computed(() => getCurrentConfig().logo);
|
const logo = computed(() => getCurrentConfig().logo);
|
||||||
|
const isAppleLogin = ref(false);
|
||||||
|
const loginButtonText = computed(() =>
|
||||||
|
isAppleLogin.value ? "Apple ID快捷登录" : "手机号快捷登录"
|
||||||
|
);
|
||||||
|
|
||||||
|
// #ifdef APP-PLUS
|
||||||
|
const systemInfo = uni.getSystemInfoSync();
|
||||||
|
isAppleLogin.value = systemInfo.platform === "ios";
|
||||||
|
// #endif
|
||||||
|
|
||||||
// 同意隐私协议并获取手机号
|
// 同意隐私协议并获取手机号
|
||||||
const handleAgreeAndGetPhone = () => {
|
const handleAgreeAndGetPhone = () => {
|
||||||
// 如果需要微信登录,直接返回
|
// 如果需要微信登录,直接返回
|
||||||
if (needWxAuthLogin.value) {
|
if (needWxAuthLogin.value && !isAppleLogin.value) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
export default {
|
export default {
|
||||||
install(app) {
|
install(app) {
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
app.mixin({
|
app.mixin({
|
||||||
onLoad() {
|
onLoad() {
|
||||||
const page = getCurrentPages().pop();
|
const page = getCurrentPages().pop();
|
||||||
@@ -13,5 +14,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
// #endif
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user