An attempt to update user data in the Realtime database when creating a User. This is my code:
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; });
However, when the user is created through. Facebook, provider data is not provided. This is the console log:
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: [] }
Am I doing something wrong or will this data not be provided at creation?
source share