2017-08-10 2 views
8

Eine Weile suchte ich nach einer Lösung für ein scheinbar einfaches Problem, aber ... Wie kann ich die aktuellen Benutzerdetails innerhalb einer Cloud-Funktion abrufen (wenn kein functions.auth-Trigger verwendet wird)) Ich bin sicher, dass es eine einfache Lösung dafür geben muss. (Ich hoffe)Cloud-Funktionen für Firebase - Aktuelle Benutzer-ID

Danke für die Antworten ... Just done, aber wie würde ich die/user/uid von der Firebase DB innerhalb eines Speichers ausgelöst Ereignis bekommen? z.B.

exports.addUploadInfoToDatabase = functions.storage.object().onChange(event => { 
    console.log("firebase storage has been changed"); 
    // need to find the uid in here somehow 
    admin.database().ref(`/user/uid`).push({testKey:"testData"}); 
}) 

Applogies, wenn ich den Punkt in Ihren Antworten verpasst habe.

Dank ...

+0

Hallo, willkommen in SO! Bitte zeigen Sie, was Sie bereits versucht haben. Ihre Frage wird, wie es derzeit ist, wahrscheinlich keine gute Antwort erhalten und möglicherweise geschlossen. Bitte [nimm die Tour] (https://stackoverflow.com/tour) und lies [how to ask] (https://stackoverflow.com/help/how-to-ask) und [wie man ein minimales, überprüfbares erstellt Beispiel] (https://stackoverflow.com/help/mcve) für bessere Ergebnisse bei der Verwendung dieser Website. – vatavale

+0

Es ist nicht klar, wie die Antwort auf die Frage, die als Duplikat gekennzeichnet ist, die Frage des OP beantwortet. –

Antwort

3

Zuerst Sie können die aktuellen angemeldeten Nutzer TokenID erhalten, indem getIdToken() auf der Benutzer-Aufruf: https://firebase.google.com/docs/reference/js/firebase.User#getIdToken

firebase.auth().currentUser.getIdToken(true) 
.then(function (token) { 
    // You got the user token 
}) 
.catch(function (err) { 
    console.error(err); 
}); 

senden Sie ihn an Ihre Cloud-Funktion.

Dann in Ihrer Cloud-Funktion können Sie: https://firebase.google.com/docs/auth/admin/verify-id-tokens

Beispiel:

admin.auth().verifyIdToken(idToken) 
    .then(function(decodedToken) { 
    var uid = decodedToken.uid; 
    // ... 
    }).catch(function(error) { 
    // Handle error 
    }); 

Die Dokumentation für decodedToken hier ist: https://firebase.google.com/docs/reference/admin/node/admin.auth.DecodedIdToken#uid

DecodedIdToken den Benutzer uid enthält, erhalten Sie können dann die Benutzer durch Aufrufen von: https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#getUser

, die einen UserRecord 01 zurückgibt

+0

Danke für die Antwort ... "Zuerst können Sie den aktuell angemeldeten Benutzer tokenId vom Client an Ihre Cloud-Funktion senden" .... Meinst du einen Wert an die Cloud-Funktion übergeben? Ich kann keine Dokumentation finden, um das zu erreichen ... –

+0

Javascript-Beispiel hinzugefügt, um das Benutzer-Token im Client zu erhalten. – Kim

+0

Wie greifen Sie auf 'firebase.auth() .currentUser' zu? Ich habe 'Firebase ist nicht definiert'. Wenn Sie bereits einen 'currentUser' haben, warum nicht direkt die' .uid? – Francescu

Verwandte Themen