2017-08-10 46 views
8

Basit bir soruna benzeyen bir çözüm ararken biraz zaman geçirdim ama ... Bir bulut işlevinin içindeki mevcut kullanıcı ayrıntılarını nasıl alabilirim (bir işlev.auth tetikleyicisi kullanmıyorken))? Eminim bunun için basit bir çözüm olmalı. (Umarız)Firebase için Bulut İşlevleri - Geçerli kullanıcı kimliğini al

Yanıtlar için teşekkürler ... Sadece bunu yaptım ancak Firebase DB'den/user/uid dosyasını depolama tetiklemeli bir etkinlik içinde nasıl alabilirim? Örneğin.

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"}); 
}) 

Yanıtlarınızdaki noktayı kaçırırsam, ek bilgi.

Teşekkür ...

+0

Merhaba, hoş geldiniz! Lütfen daha önce denediğin şeyi göster. Sorunuz, şu anda olduğu gibi muhtemelen iyi bir cevap alamayacak ve kapalı olabilir. Lütfen [tura katılın] (https://stackoverflow.com/tour) ve [nasıl yapılır?] 'U (https://stackoverflow.com/help/how-to-ask) ve [nasıl minimum oluşturabiliriz? Bu siteyi kullanarak daha iyi sonuçlar için örnek] (https://stackoverflow.com/help/mcve). – vatavale

+0

Yinelenen soru olarak yanıtın OP'nin sorusunu nasıl ele aldığı açık değildir. –

cevap

3

İlk yapabilirsiniz olsun geçerli oturum açan kullanıcının tokenId User getIdToken() arayarak:

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

https://firebase.google.com/docs/reference/js/firebase.User#getIdToken Sonra bulut işlevine gönderin.

Sonra bulut işlevinde kullanabilirsiniz: https://firebase.google.com/docs/auth/admin/verify-id-tokens

Örnek:

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

decodedToken için dokümanları buradadır: https://firebase.google.com/docs/reference/admin/node/admin.auth.DecodedIdToken#uid

DecodedIdToken kullanıcı uid içeriyor, o zaman alabilirsiniz kullanıcı bunu arayarak: https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#getUser

Bir UserRecord 01 döndüren

+0

Cevabınız için teşekkürler ... "İlk olarak, oturum açmış olan kullanıcı tokenId'sini istemciden Bulut İşlevi'ne gönderebilirsiniz." .... Bulut işlevine bir değer iletmek mi istiyorsunuz? Bunu elde etmek için herhangi bir belge bulamıyorum ... –

+0

İstemcide kullanıcı belirteci almak için Javascript örneği eklendi. – Kim

+0

Firebase.auth(). CurrentUser' öğesine nasıl erişirsiniz? Firebase tanımlı değil. Zaten bir "currentUser" var, neden doğrudan .uid olsun? – Francescu