Что я делаю неправильно на "Utilities.computeHmacSha256Signature"? - PullRequest
0 голосов
/ 30 апреля 2020

Я застрял с генерацией JWT. Когда я запускаю приведенный ниже код, я получаю «NiQPVTQSv3OyW5mFH27_wWMbTp1wOTScYP468rHddbQ» как encodedSignature , который завершается ошибкой на сервере.

Ожидаемая закодированная подпись равна "61Wp2O45amZBgdRzWwqdnRBQC2c9Fi7KMv8RLvH1vks". (Это из рабочего кода в python).

Согласно справочнику google , два входа для Utilities.computeHmacSha256Signature () должны быть либо байтами [], byte [] или строка, строка. Разве мои входные данные не соответствуют типу?

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);
    }
...