2016-08-06 10 views

Antwort

8

firebaser hier

aktualisieren 2016.11.08 ursprüngliche Antwort unten

Wir haben gerade die Firebase Admin SDK veröffentlicht, die Verwaltungsanwendungsfälle unterstützt, wie deleting a user account without requiring that user to sign in first.

ursprüngliche Antwort

Es gibt derzeit keine API in Firebase-Authentifizierung eines Benutzers zu löschen, ohne dass die Benutzer erforderlich, sich anzumelden. Wir wissen, dass dies die Benutzerfreundlichkeit unserer API begrenzt und arbeiten eine solche Funktionalität in ein hinzufügen zukünftige Version. Aber wie üblich geben wir keine bestimmten Zeitlinien für die Verfügbarkeit der Funktion an.

Im Moment die einzige Arbeit arounds sind:

  • Zeichen in als jeder Testbenutzer in der App und löschen Sie den Benutzer von dort
  • jeden Benutzer wiederum löschen aus der Firebase Console
+7

können Sie beachten Sie bitte die ‚Sind Sie sicher, prompt‘ in der Firebase Console, wenn Sie ‚Shift‘ + klicken Sie auf ‚Konto löschen‘ entfernen. Dies würde das Verhalten in der Datenbank nachahmen und die Vorgänge erheblich beschleunigen. – DrZaphod

+0

Kann ich mich "wie jeder Testbenutzer" von appengine anmelden, ohne Browser? Kann ich Nutzer aus der App-Engine direkt oder über einige Webdienste löschen? – makkasi

+0

in der NodeJs Firebase-Admin-SDK gibt es keine Möglichkeit, alle Benutzer dann für jeden Benutzer zu erhalten admin.auth(). DeleteUser (uid); ' –

26

Weil ich ziemlich faul bin an Tasten und Elemente in der Benutzeroberfläche klicken, habe ich einen kleinen Client-Skript auf:

$('[aria-label="Delete account"]').click() 
setTimeout(function() { 
    $(".md-raised:contains(Delete)").click() 
}, 1000); 

Sie müssen es möglicherweise mehrmals ausführen, aber es ist viel besser, als die Zeit zu verschwenden, Dinge manuell auf den Bildschirm zu klicken.

+0

Vielen Dank ... funktioniert super..saves mich 2 Klicks und bewegen Sie die Maus herum :) – krv

+1

Danke, das ist wirklich hilfreich :) –

+0

@ LuisMejíaF. Ich habe erwartet, dass es nützlich ist, wenn Sie die Antwort posten :) Immer, automatisieren Sie das Zeug, wenn es etwas zu wiederholen gibt :-) –

4

Ihr Hilfsskript wurde leicht vergrößert.

Deutsch Feuerbasis Site-Version:

$('[aria-label="Nutzermenü öffnen"]').click(); 
$('[aria-label="Konto löschen"]').click(); 
for (i = 0; i < 20; i++) { 
    setTimeout(() => { 
    $('.md-raised:contains(Löschen)').click(); 
    }, i * 200); 
} 

Für die Englisch-Version ersetzen Sie einfach den Text. Auf diese Weise können Sie 20 oder mehr Benutzer löschen, sobald sie ausgeführt wurden.

+0

Ist das soweit richtig? "Löschen" = "Löschen" "Konto löschen" = "Account löschen" "Nutzermenü öffnen" =? – Aldasa

0

Dieses hilfreich für einige sein könnte. Wenn Sie Zugriff auf die Firebase-Benutzerkonsole haben, speichern Sie die Seite einfach als HTML und verwenden Sie die folgenden, um Benutzer mit Knoten zu löschen.

muß Setup Feuerbasis-admin
let fs = require('fs'), 
    admin = require('firebase-admin'), 
    cheerio = require('cheerio'); 

// initialize firebase admin here 
admin.initializeApp({ 
credential: admin.credential.cert('path/to/serviceAccountKey.json'), 
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com' 
}); 

// use cheerio to load the html file you downloaded 
$ = cheerio.load(fs.readFileSync('./yourfirebaseconsole.html')); 
$('.a12n-user-uid .fb-table-cell-wrapper').each(function() { 
    admin.auth().deleteUser($(this).text()); 
}).then(() => { 
    console.log('successfully delete user'); 
}).catch((error) => { 
    console.log('error occurred ', error); 
}); 

Ich würde empfehlen, einen Testlauf der HTML-Parsing-Logik zu tun, wenn man auf der Seite Browser nur durch diese ausgeführt wird und bestätigt wird, dass nur Benutzer-IDs im Ergebnis angezeigt werden.In meinem Fall zurück dies alle UIDs

$('.a12n-user-uid .fb-table-cell-wrapper').each(function() { 
    console.log($(this).text()); 
}); 
36

Wie in Antwort aktualisiert, können Sie wahrscheinlich jetzt Feuerbasis Admin-Tools verwenden, aber wenn Sie nicht wollen - hier ist ein wenig fester Javascript entfernen Benutzer im Web:

var intervalId; 

var clearFunction = function() { 
    if ($('[aria-label="Delete account"]').size() == 0) { 
    console.log("interval cleared") 
    clearInterval(intervalId) 
    return 
    } 
    $('[aria-label="Delete account"]')[0].click(); 
    setTimeout(function() { 
    $(".md-raised:contains(Delete)").click() 
    }, 1000); 
}; 

intervalId = setInterval(clearFunction, 3000) 

führen Sie es einfach in Entwickler-Tools

+0

dies funktionierte für mich – mjpablo23

+1

Das funktioniert, aber stellen Sie sicher, dass die Registerkarte geöffnet nicht zu einem anderen wechseln, während es läuft – KrauseFx

+1

Arbeitete auch für mich. Vielen Dank. Es ist traurig, dass dies die Problemumgehung sein muss. –