2017-08-10 21 views
8

एक साधारण समस्या के समाधान के लिए एक समाधान खोजते समय थोड़ी देर बिताएं लेकिन ... मैं क्लाउड फ़ंक्शन के अंदर वर्तमान उपयोगकर्ता विवरण कैसे प्राप्त कर सकता हूं (जब कोई फ़ंक्शन.एथ ट्रिगर का उपयोग नहीं करता)? मुझे यकीन है कि इसके लिए एक आसान समाधान होना चाहिए। (मुझे आशा है)फायरबेस के लिए क्लाउड फ़ंक्शंस - वर्तमान उपयोगकर्ता आईडी प्राप्त करें

उत्तरों के लिए धन्यवाद ... बस ऐसा किया गया है लेकिन मैं स्टोरेज ट्रिगर किए गए ईवेंट में फ़ायरबेस डीबी से/उपयोगकर्ता/यूआईडी कैसे प्राप्त करूं? जैसे

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

एप्लाजिज यदि मैंने आपके उत्तरों में बिंदु खो दिया है।

धन्यवाद ...

+0

हाय, एसओ में आपका स्वागत है! कृपया दिखाएं कि आपने पहले से क्या प्रयास किया है। आपका प्रश्न, जैसा कि वर्तमान में है, शायद एक अच्छा जवाब नहीं मिलेगा, और बंद हो सकता है। कृपया [टूर लें] (https://stackoverflow.com/tour) और पढ़ें [कैसे पूछें] (https://stackoverflow.com/help/how-to-ask) और [न्यूनतम, सत्यापन योग्य कैसे बनाएं उदाहरण] (https://stackoverflow.com/help/mcve) इस साइट का उपयोग कर बेहतर परिणामों के लिए। – vatavale

+0

यह स्पष्ट नहीं है कि डुप्लिकेट के रूप में फ़्लैग किए गए प्रश्न पर उत्तर ओपी के प्रश्न को कैसे संबोधित करता है। –

उत्तर

3

सबसे पहले आप कर सकते हैं पाने के वर्तमान साइन-इन उपयोगकर्ता tokenId उपयोगकर्ता पर getIdToken() फोन करके: 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); 
}); 

फिर अपने बादल समारोह को भेजें।

फिर अपने बादल समारोह में आप का उपयोग कर सकते हैं: https://firebase.google.com/docs/auth/admin/verify-id-tokens

उदाहरण:

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

decodedToken के लिए प्रलेखन यहाँ है: https://firebase.google.com/docs/reference/admin/node/admin.auth.DecodedIdToken#uid

DecodedIdToken उपयोगकर्ता uid होता है, तो आप प्राप्त कर सकते हैं उपयोगकर्ता इसे कॉल करके: https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#getUser

जो उपयोगकर्ताRecord 01 देता है

+0

उत्तर के लिए धन्यवाद ... "सबसे पहले आप क्लाइंट से अपने क्लाउड फ़ंक्शन पर वर्तमान साइन-इन उपयोगकर्ता टोकन आईडी भेज सकते हैं" .... क्या आपका मतलब क्लाउड फ़ंक्शन पर मान पास करना है? मुझे यह प्राप्त करने के लिए कोई दस्तावेज नहीं मिल रहा है ... –

+0

क्लाइंट में उपयोगकर्ता टोकन प्राप्त करने के लिए जावास्क्रिप्ट उदाहरण जोड़ा गया। – Kim

+0

आप 'firebase.auth()। CurrentUser' तक कैसे पहुंचते हैं? मुझे 'फायरबेस को परिभाषित नहीं किया गया है'। यदि आपके पास पहले से 'currentUser' होगा तो सीधे' .uid क्यों नहीं मिलता है? – Francescu

संबंधित मुद्दे