javascript - 在 Google Apps 脚本中解码 JWT

标签 javascript google-apps-script google-sheets

我正在尝试使用此函数解码 JSON Web Token:

function parseJwt(token) {
    var base64Url = token.split('.')[1];
    var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
    var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
    }).join(''));

    return JSON.parse(jsonPayload);
};

这在我的 Google Chrome 控制台中运行良好,但当我尝试在 Google Scripts 中使用它时,它说“未定义 atob”。我 looked up what atob does ,这是解码 64 位编码的字符串。但是当我使用 base64Decode(String)它产生一个数组而不是一个字符串。我怎样才能重现 atob 的行为?或者还有其他解码 JWT 的方法吗?

最佳答案

我从 https://developers.google.com/apps-script/reference/script/script-app#getidentitytoken 找到了如何解码 JWT

function parseJwt(token) {
    let body = token.split('.')[1];
    let decoded = Utilities.newBlob(Utilities.base64Decode(body)).getDataAsString();
    return JSON.parse(decoded);
};

关于javascript - 在 Google Apps 脚本中解码 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63975006/

相关文章:

javascript - 在 if 条件内赋值时限定一个变量

javascript - 如何关闭灯箱和背景覆盖?

javascript - Twitter 小部件并不总是填充

google-apps-script - UrlFetchApp.fetch 链接长度限制

javascript - 函数 createEvent 返回 null

java - 是否可以使用 Java Google Sheets API 获取上次修改日期 > 特定日期的行

google-apps-script - 仅当符合条件时才查找编号最大的表条目

javascript - 通过键盘的 slider 动画不起作用(javascript 和 CSS)

email - 以机器可读的格式从 Google 电子表格更改通知中获取更改的单元格的详细信息

javascript - 如何在 Google 脚本中格式化从扫描仪收到的数据?