fix: lark calendar refresh token bug (#4066)

Co-authored-by: chengcheng.frontend <chengcheng.frontend@bytedance.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
pull/4047/head
Cheng CHENG 2022-09-01 03:19:30 +08:00 committed by GitHub
parent 397d47b4b5
commit 6c3dcc2fbf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 5 deletions

View File

@ -107,7 +107,7 @@ export const getAppAccessToken: () => Promise<string> = async () => {
const expireDate = appKeys.expire_date;
if (appAccessToken && expireDate && !isExpired(expireDate)) {
log.debug("get app access token not expired", appAccessToken);
log.debug("get app access token not expired");
return appAccessToken;
}
@ -137,7 +137,7 @@ export const getAppAccessToken: () => Promise<string> = async () => {
where: { slug: "lark-calendar" },
data: { keys: { ...appKeys, app_ticket: "" } },
});
return getAppAccessToken();
throw new Error("app_ticket invalid, please try again");
}
}

View File

@ -71,7 +71,7 @@ export default class LarkCalendarService implements Calendar {
}
try {
const appAccessToken = await getAppAccessToken();
const resp = await this.fetcher(`/authen/v1/refresh_access_token`, {
const resp = await fetch(`${this.url}/authen/v1/refresh_access_token`, {
method: "POST",
headers: {
Authorization: `Bearer ${appAccessToken}`,
@ -84,8 +84,15 @@ export default class LarkCalendarService implements Calendar {
});
const data = await handleLarkError<RefreshTokenResp>(resp, this.log);
this.log.debug(
"LarkCalendarService refreshAccessToken data refresh_expires_in",
data.data.refresh_expires_in,
"and access token expire in",
data.data.expires_in
);
const newLarkAuthCredentials: LarkAuthCredentials = {
...larkAuthCredentials,
refresh_token: data.data.refresh_token,
refresh_expires_date: Math.round(+new Date() / 1000 + data.data.refresh_expires_in),
access_token: data.data.access_token,
expiry_date: Math.round(+new Date() / 1000 + data.data.expires_in),
};
@ -107,7 +114,13 @@ export default class LarkCalendarService implements Calendar {
};
private fetcher = async (endpoint: string, init?: RequestInit | undefined) => {
const accessToken = await this.auth.getToken();
let accessToken = "";
try {
accessToken = await this.auth.getToken();
} catch (error) {
throw new Error("get access token error");
}
return fetch(`${this.url}${endpoint}`, {
method: "GET",
headers: {