Преобразование строки в безопасный для Интернета формат 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]');
}