Преобразование строки в безопасный для Интернета формат Base64

Я тестирую, как обновить изображение пользователя с помощью службы каталогов Admin SDK с помощью скриптов Google Apps со следующей функцией:

function updatePhoto(){
  var fileId = 'XXXXXXXXXXXXXXXXXXX';
  var b = DocsList.getFileById(fileId).getBlob();
  var encoded = Utilities.base64Encode(b.getBytes());

  encoded = encoded.replace(/\//g,'_').replace(/\+/g,'-').replace(/\=/g,'*');
  AdminDirectory.Users.Photos.update({
    "photoData": encoded },'[email protected]');
}

Однако это не всегда работает. Всякий раз, когда в закодированной в base64 строке есть заполнение, происходит сбой. Ссылаясь на документ Google (https://developers.google.com/admin-sdk/directory/v1/reference/users/photos/update), Я немного запутался с описаниями. Это говорит:

Знак равенства (=) заменяется на звездочку (*).Для дополнения используется символ точки (.) Вместо определения baseURL в RFC-4648, в котором для дополнения используется знак равенства (=). Это сделано для упрощения парсинга URL.

Что на самом деле должно быть сделано? (=) используется для заполнения в Base64. Итак, я должен использовать (*) или (.)? Я попытался заменить (=) на (.), Но не повезло.

Кто-нибудь может помочь?

Это так странно. Это работает, когда я не заменяю (=).

function updatePhoto(){
  var fileId = 'XXXXXXXXXXXXXXXXXXX';
  var b = DocsList.getFileById(fileId).getBlob();
  var encoded = Utilities.base64Encode(b.getBytes());

  encoded = encoded.replace(/\//g,'_').replace(/\+/g,'-');
  AdminDirectory.Users.Photos.update({
    "photoData": encoded },'[email protected]');

}

Ответы на вопрос(3)

Ваш ответ на вопрос