gpt4 book ai didi

javascript - 用于社交提供商的 Firebase 身份验证事件的云功能

转载 作者:搜寻专家 更新时间:2023-11-01 04:29:29 24 4
gpt4 key购买 nike

尝试在创建用户时更新实时数据库中的用户数据。这是我的代码:

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

但是,当一个用户是通过创建的。 Facebook,未提供提供商数据。这是控制台日志:

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: [] }

我是不是做错了什么,或者这些数据不会在创建时提供?

最佳答案

您不需要再次调用 admin.auth().getUser(...)。方便的是,您在此函数中收到的 event.data 已经是一个 UserRecord !

这是我打印 Auth 事件的非常简单的代码:

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

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

下面是我通过 Facebook 登录时的输出:

{
"displayName": "Robert-Jan Huijsman",
"email": "REDACTED@gmail.com",
"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": "REDACTED@gmail.com",
"photoURL": "https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/REDACTED",
"providerId": "facebook.com",
"uid": "http://facebook.com/1234567890"
}
],
"uid": "AaBbCcDdEeFf"
}

关于javascript - 用于社交提供商的 Firebase 身份验证事件的云功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42843925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com