Я развертываю облачную функцию в Firebase, которая действует как промежуточное ПО OAuth2, обрабатывая авторизацию и получая токен. После получения токена доступа и сведений о пользователе я хочу сохранить токен и данные пользователя в базе данных, а также обновить или создать пользователя. Код взят из этого примера . Но я всегда получаю одно и то же сообщение об ошибке из журналов функций:
TypeError: obj.hasOwnProperty is not a function
at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:553:17)
at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)
at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)
at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)
Ниже приведена функция для создания пользователя
async function createFirebaseAccount(uid, displayName, email, accessToken) {
const databaseTask = admin.database().ref(`/idpAccessToken/${uid}`).set(accessToken);
const userCreationTask = admin.auth().updateUser(uid, {
displayName: displayName,
email: email,
emailVerified: true,
}).catch((error) => {
if (error.code === 'auth/user-not-found') {
return admin.auth().createUser({
uid: uid,
displayName: displayName,
email: email,
emailVerified: true,
});
}
throw error;
});
// execution stops here, when resolving this tasks
await Promise.all([userCreationTask, databaseTask]);
const token = await admin.auth().createCustomToken(uid);
console.log('Created Custom token for UID "', uid, '" Token:', token);
return token;
}
Переменные uid, displayName, email и token простая текстовая строка во всех четырех случаях. Токен, возвращенный из этой функции, позже возвращается вызывающему клиенту, используя jsonp
. Я не понимаю, откуда эта ошибка.