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]');

}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage