diff --git a/packages/data-services/src/request/request/authorization/authorization.ts b/packages/data-services/src/request/request/authorization/authorization.ts index b581bd5ac8..99989a444d 100644 --- a/packages/data-services/src/request/request/authorization/authorization.ts +++ b/packages/data-services/src/request/request/authorization/authorization.ts @@ -36,10 +36,23 @@ function getToken(): { accessToken: string; refreshToken: string } | null { } } +function b64DecodeUnicode(str: string) { + // Going backwards: from byte stream, to percent-encoding, to original string. + return decodeURIComponent( + window + .atob(str) + .split('') + .map(function (c) { + return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); + }) + .join('') + ); +} + function parseAccessToken(token: string): AccessTokenMessage | null { try { const message: AccessTokenMessage = JSON.parse( - window.atob(token.split('.')[1]) + b64DecodeUnicode(token.split('.')[1]) ); return message; } catch (error) {