首页 > 解决方案 > 我在“Utilities.computeHmacSha256Signature”上做错了什么?

问题描述

我坚持生成 JWT。当我运行下面的代码时,我得到“NiQPVTQSv3OyW5mFH27_wWMbTp1wOTScYP468rHddbQ”作为编码签名服务器失败。

预期的编码签名是“ 61Wp2O45amZBgdRzWwqdnRBQC2c9Fi7KMv8RLvH1vks ”。(它来自python中的工作代码)。

根据谷歌参考, Utilities.computeHmacSha256Signature()的两个输入需要是 byte[]、byte[] 或 string、string。我的输入在类型上不匹配吗?

function resecret(s) {

  var bin_secret = "";
  var duo = ""
  var new_secret_array = [];
  var j = 0;
  var len=s.length;
  var element = 0;
  for (var i = 0; i < len; i++) {
    duo = s.charAt(i) + s.charAt(i+1);
    element = parseInt(duo, 16);
    bin_secret = bin_secret + element;
    new_secret_array[j] = element;
    j++;
    i++;
  }
  return new_secret_array;
}

function theProblem() {
    var claim = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI0MjM4NmZiMGFjMTI1YjQ0MzFiMTI5ZTMzNDBhOGIxOSIsImlhdCI6MTU4ODI1MzU3NywibmJmIjoxNTg4MjUzNTc3LCJleHAiOjE1ODgyNTQxNzcsImhvc3QiOiJodHRwczovL3NvbWV3aGVyZS5zb21lSG9zdC5jb20iLCJwYXRoIjoiL3NvbWUvcGF0aCIsIm1ldGhvZCI6IkdFVCJ9";
    var client_secret = "a1a2a3";
    var signature = Utilities.computeHmacSha256Signature(claim, resecret(client_secret));
    var encodedSignature = base64Encode(signature);
    }

标签: javascriptgoogle-apps-scriptjwthmac

解决方案


推荐阅读