Convertendo string para o formato Base64 seguro para a Web
Estou testando como atualizar a imagem do usuário usando o Serviço de diretório do SDK do administrador com scripts do Google Apps com a seguinte função:
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]');
}
No entanto, nem sempre funciona. Sempre que houver preenchimento na cadeia codificada base64, ele falhará. Referindo-se ao documento do Google (https://developers.google.com/admin-sdk/directory/v1/reference/users/photos/update), Estou um pouco confuso com as descrições. Diz:
O caractere de sinal de igual (=) é substituído pelo asterisco (*).Para preenchimento, o caractere de ponto (.) É usado em vez da definição RFC-4648 baseURL, que usa o sinal de igual (=) para preenchimento. Isso é feito para simplificar a análise de URL.O que realmente deve ser feito? (=) é usado para preenchimento no Base64. Então, devo usar (*) ou (.)? Tentei substituir (=) por (.), Mas não tive sorte.
Alguém pode ajudar?
Isso é tão estranho. Funciona quando eu não substituo (=).
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]');
}