feat: 调整了登录的逻辑
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import { oauthToken, bindUserPhone } from "../request/api/LoginApi";
|
||||
import { clientId } from "@/constant/base";
|
||||
import { NOTICE_EVENT_LOGIN_SUCCESS } from "@/constant/constant";
|
||||
import { removeAccessToken, setAccessToken } from "../constant/token";
|
||||
import { removeAccessToken, setAccessToken, getRefreshToken, setRefreshToken, getAccessToken } from "../constant/token";
|
||||
|
||||
const loginAuth = (e) => {
|
||||
const authLogin = (e) => {
|
||||
removeAccessToken();
|
||||
|
||||
// 条件编译微信小程序、抖音小程序、APP-PLUS(包含iOS和Android)
|
||||
// 条件编译微信小程序、抖音小程序
|
||||
let provider = "weixin";
|
||||
let grant_type = "wechat";
|
||||
|
||||
@@ -20,6 +20,58 @@ const loginAuth = (e) => {
|
||||
grant_type = "toutiao";
|
||||
// #endif
|
||||
|
||||
return new Promise(async (resolve, reject) => {
|
||||
uni.login({
|
||||
provider,
|
||||
onlyAuthorize: true,
|
||||
success: async (loginRes) => {
|
||||
console.log("Authorize success: ", JSON.stringify(loginRes));
|
||||
const openIdCode = loginRes.code;
|
||||
console.log("authLogin获取到的授权code:", openIdCode);
|
||||
|
||||
if (!openIdCode) {
|
||||
console.warn("authLogin未获取到授权 code");
|
||||
reject("authLogin未获取到授权code");
|
||||
return;
|
||||
}
|
||||
|
||||
const params = {
|
||||
openIdCode: [openIdCode],
|
||||
grant_type: grant_type,
|
||||
clientId: clientId,
|
||||
scope: "server",
|
||||
};
|
||||
console.log("authLogin获取到的授权params:", JSON.stringify(params));
|
||||
|
||||
await loginRequest(params)
|
||||
.then(() => {
|
||||
resolve(false);
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err);
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
reject("authLogin登录失败");
|
||||
},
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const refreshAuthLogin = () => {
|
||||
let provider = "weixin";
|
||||
let grant_type = "wechat";
|
||||
|
||||
// #ifdef MP-WEIXIN
|
||||
provider = "weixin";
|
||||
grant_type = "wechat";
|
||||
// #endif
|
||||
|
||||
// #ifdef MP-TOUTIAO
|
||||
provider = "toutiao";
|
||||
grant_type = "toutiao";
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
const systemInfo = uni.getSystemInfoSync();
|
||||
if (systemInfo.platform === "ios") {
|
||||
@@ -27,22 +79,21 @@ const loginAuth = (e) => {
|
||||
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);
|
||||
console.log("refreshAuthLogin获取到的授权code:", openIdCode);
|
||||
|
||||
if (!openIdCode) {
|
||||
console.warn("refreshToken 未获取到登录 code");
|
||||
reject("refreshToken 未获取到登录 code");
|
||||
console.warn("refreshAuthLogin未获取到授权code");
|
||||
reject("refreshAuthLogin未获取到授权code");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -51,37 +102,67 @@ const loginAuth = (e) => {
|
||||
clientId: clientId,
|
||||
scope: "server",
|
||||
};
|
||||
|
||||
|
||||
if (provider === "apple") {
|
||||
params.identityToken = openIdCode;
|
||||
} else {
|
||||
params.openIdCode = [openIdCode];
|
||||
}
|
||||
|
||||
console.log("获取到的授权params:", JSON.stringify(params));
|
||||
|
||||
const response = await oauthToken(params);
|
||||
if (response.access_token) {
|
||||
setAccessToken(response.access_token);
|
||||
resolve();
|
||||
} else {
|
||||
reject(response.message || "登录失败");
|
||||
}
|
||||
console.log("refreshAuthLogin获取到的授权params:", JSON.stringify(params));
|
||||
await loginRequest(params)
|
||||
.then(() => {
|
||||
resolve();
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err);
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
reject("登录失败");
|
||||
console.warn("refreshAuthLogin fail:", err);
|
||||
reject("refreshAuthLogin登录失败");
|
||||
},
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const bindPhone = async (params) => {
|
||||
try {
|
||||
const response = await bindUserPhone(params);
|
||||
return response;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
/// 检查刷新 token 是否有效
|
||||
const checkRefreshToken = async () => {
|
||||
const token = getRefreshToken();
|
||||
if (token) {
|
||||
await refreshTokenRequest(token);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export { loginAuth, bindPhone };
|
||||
/// 刷新 token 的函数
|
||||
const refreshTokenRequest = async (token) => {
|
||||
const params = {
|
||||
grant_type: 'refresh_token',
|
||||
refresh_token: token,
|
||||
clientId: clientId,
|
||||
scope: "server",
|
||||
};
|
||||
|
||||
const response = await oauthToken(params);
|
||||
if (response.refresh_token && response.access_token) {
|
||||
setRefreshToken(response.refresh_token);
|
||||
setAccessToken(response.access_token);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// 重新登录的函数
|
||||
const loginRequest = async (params) => {
|
||||
const response = await oauthToken(params);
|
||||
if (response.access_token) {
|
||||
setAccessToken(response.access_token);
|
||||
setRefreshToken(response.refresh_token);
|
||||
return true;
|
||||
} else {
|
||||
throw new Error(response.message || "登录失败");
|
||||
}
|
||||
}
|
||||
|
||||
export { authLogin, refreshAuthLogin, checkRefreshToken };
|
||||
|
||||
Reference in New Issue
Block a user