5

उपयोगकर्ता द्वारा बनाए जाने पर रीयलटाइम डेटाबेस में उपयोगकर्ता डेटा को अपडेट करने का प्रयास कर रहा है। यह मेरा कोड है:सामाजिक प्रदाता के लिए फायरबेस एथ घटनाओं के लिए क्लाउड फ़ंक्शंस

const functions = require('firebase-functions'); 
const promise = require('request-promise'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 

var omitBy = require('lodash.omitby'); 
var isNil = require('lodash.isnil'); 

'use strict'; 

exports.userCreated = functions.auth.user().onCreate(event => { 

    let request = admin.auth().getUser(event.data.uid) 
    .then(function(user) { 
    console.log("Successfully fetched user data: ", user.toJSON()); 

    var email, firstName, lastName, photoURL; 

    for (var provider of user.providerData) { 

     if (provider.email) { 
     email = provider.email; 
     } 

     if (provider.photoURL) { 
     photoURL = provider.photoURL; 
     } 

     if (provider.displayName) { 
     const names = provider.displayName.split(' '); 
     firstName = names[0]; 

     if (names.length > 1) { 
      lastName = names[names.length - 1]; 
     } 
     } 
    } 

    var values = omitBy({ 
     email: email, 
     first_name: firstName, 
     last_name: lastName, 
     license_agreement_version: '1.1', 
     image_url: photoURL 
    }, isNil); 

    admin.database().ref('users/' + user.uid).set(values); 
    }) 
    .catch(function(error) { 
    console.error("Error Fetching User: ", error); 
    }); 

    return request; 
}); 

हालांकि, जब उपयोगकर्ता द्वारा बनाया जाता है। फेसबुक, प्रदाता डेटा प्रदान नहीं किया जाता है। यह कंसोल लॉग है:

Successfully fetched user data: { uid: 'exampleUID', 
    email: undefined, 
    emailVerified: false, 
    displayName: undefined, 
    photoURL: undefined, 
    disabled: false, 
    metadata: 
    { lastSignedInAt: 2017-03-16T19:40:59.000Z, 
    createdAt: 2017-03-16T19:40:59.000Z }, 
    providerData: [] } 

क्या मैं कुछ गलत कर रहा हूं, या यह डेटा सृजन पर प्रदान नहीं किया जाएगा?

+0

यदि आप कभी भी एक स्पष्टीकरण मिला है के रूप में क्यों फेसबुक और Google के लिए उपयोगकर्ता अपूर्ण है? –

उत्तर

1

आपको admin.auth().getUser(...) पर एक और कॉल करने की आवश्यकता नहीं है। सुविधाजनक रूप से, event.data जो आपको इस फ़ंक्शन में प्राप्त होता है वह पहले से ही UserRecord है! क्या है कि आउटपुट जब मैं फेसबुक के माध्यम से लॉग इन कर रहा है

var functions = require('firebase-functions'); 

exports.helloAuth = functions.auth.user().onCreate(event => { 
    console.log("User created: " + JSON.stringify(event)); 
}); 

और यहाँ:

यहाँ मेरी बहुत ही सरल प्रमाणीकरण घटनाओं मुद्रित करने के लिए कोड है

{ 
    "displayName": "Robert-Jan Huijsman", 
    "email": "[email protected]", 
    "metadata": { 
    "createdAt": "2017-03-17T01:34:03.000Z", 
    "lastSignedInAt": "2017-03-17T01:34:03.000Z" 
    }, 
    "photoURL": "https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/REDACTED", 
    "providerData": [ 
    { 
     "displayName": "Robert-Jan Huijsman", 
     "email": "[email protected]", 
     "photoURL": "https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/REDACTED", 
     "providerId": "facebook.com", 
     "uid": "http://facebook.com/1234567890" 
    } 
    ], 
    "uid": "AaBbCcDdEeFf" 
} 
संबंधित मुद्दे