Konvertieren von Zeichenfolgen in das web-sichere Base64-Format
Ich teste die Aktualisierung des Benutzerbilds mithilfe des Admin SDK-Verzeichnisdiensts mit Google Apps-Skripts mit der folgenden Funktion:
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]');
}
Es funktioniert jedoch nicht immer. Immer wenn in der base64-codierten Zeichenfolge ein Auffüllen vorhanden ist, schlägt dies fehl. Verweis auf das Google-Dokument (https://developers.google.com/admin-sdk/directory/v1/reference/users/photos/update), Ich bin etwas verwirrt mit den Beschreibungen. Es sagt:
Das Gleichheitszeichen (=) wird durch das Sternchen (*) ersetzt.Zum Auffüllen wird das Punktzeichen (.) Anstelle der RFC-4648-baseURL-Definition verwendet, die das Gleichheitszeichen (=) zum Auffüllen verwendet. Dies wird durchgeführt, um das URL-Parsing zu vereinfachen.Was ist eigentlich zu tun? (=) wird zum Auffüllen in Base64 verwendet. Soll ich also (*) oder (.) Verwenden? Ich habe versucht, (=) durch (.) Zu ersetzen, aber kein Glück.
Kann jemand helfen?
Es ist so seltsam. Es funktioniert, wenn ich nicht ersetze (=).
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]');
}