diff --git a/packages/core/pluggableElementTypes/models/InternetAccountModel.ts b/packages/core/pluggableElementTypes/models/InternetAccountModel.ts index a215a91f25..ae3cc24ebd 100644 --- a/packages/core/pluggableElementTypes/models/InternetAccountModel.ts +++ b/packages/core/pluggableElementTypes/models/InternetAccountModel.ts @@ -224,6 +224,7 @@ export const InternetAccount = types self.removeToken() throw error } + self.storeToken(validatedToken); return { internetAccountType: self.type, authInfo: { token: validatedToken, configuration: getConf(self) }, @@ -241,6 +242,9 @@ export const InternetAccount = types */ getFetcher(loc?: UriLocation) { return async (input: RequestInfo, init?: RequestInit) => { + if(!inWebWorker && loc){ + loc.internetAccountPreAuthorization = await self.getPreAuthorizationInformation(loc); + } const authToken = await self.getToken(loc) const newInit = self.addAuthHeaderToInit(init, authToken) return fetch(input, newInit) diff --git a/plugins/authentication/src/OAuthModel/model.tsx b/plugins/authentication/src/OAuthModel/model.tsx index 8dbea73885..eb98a9d501 100644 --- a/plugins/authentication/src/OAuthModel/model.tsx +++ b/plugins/authentication/src/OAuthModel/model.tsx @@ -307,7 +307,12 @@ const stateModelFactory = (configSchema: OAuthInternetAccountConfigModel) => { const refreshToken = self.hasRefreshToken && self.retrieveRefreshToken() if (refreshToken) { - resolve(await self.exchangeRefreshForAccessToken(refreshToken)) + try { + const token = await self.exchangeRefreshForAccessToken(refreshToken); + resolve(token); + } catch (err) { + reject(new Error(`Token could not be refreshed. ${err} Please reload the page.`)); + } } this.addMessageChannel(resolve, reject) // may want to improve handling @@ -331,9 +336,10 @@ const stateModelFactory = (configSchema: OAuthInternetAccountConfigModel) => { const newToken = await refreshTokenPromise return this.validateToken(newToken, location) } catch (err) { - throw new Error(`Token could not be refreshed. ${err}`) + throw new Error(`Token could not be refreshed. ${err}`); } } + throw new Error(`Token could not be refreshed. No refresh token found`); } else { refreshTokenPromise = undefined }