Próba zaktualizowania danych użytkownika w bazie danych czasu rzeczywistego po utworzeniu użytkownika. To jest mój kod:Funkcje chmurowe dla zdarzeń Firebase Auth dla dostawcy usług społecznościowych
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;
});
Jednak, gdy użytkownik jest tworzony przez. Facebook, dane dostawcy nie są dostarczane. To jest dziennik konsoli:
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: [] }
Czy robię coś nie tak, czy te dane nie zostaną dostarczone podczas tworzenia?
Czy kiedykolwiek znaleźć wyjaśnienie, jak, dlaczego użytkownik jest niekompletny na Facebooku i Google? –