有没有办法从客户端应用程序中调用 Firebase 服务器“功能”,比如 Angular 2?
Posted
技术标签:
【中文标题】有没有办法从客户端应用程序中调用 Firebase 服务器“功能”,比如 Angular 2?【英文标题】:Is there a way to call a Firebase server "function" from within a client app, say with Angular 2? 【发布时间】:2017-08-31 20:00:34 【问题描述】:因此,Firebase 提供了一种称为“函数”的东西,它本质上是一个 nodejs 服务器,它预先配置了所有 Firebase 内容,并自动处理所有缩放。我想知道,有没有办法从 Angular 2 应用程序调用“函数”index.js 文件中的函数?
我需要使用 firebase-admin npm 模块来检查用户的电子邮件是否存在,然后获取该用户的 uid(如果存在)。
根据link,我可以设置我的 index.js 文件,例如:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
// I'm actually not sure if this is how you do this part:
exports.getUserByEmail = (email) =>
return admin.auth().getUserByEmail(email);
有没有办法可以在我的 Angular 2 应用程序的组件内调用 getUserByEmail()
?
提前致谢!
【问题讨论】:
你可以调用一个函数——做任何你想做的事情——通过HTTP。您可能只想允许来自经过身份验证的用户的呼叫,因此请查看:github.com/firebase/functions-samples/tree/master/… 我很欣赏这一点,但即使从这个例子来看,我仍然不能完全确定要向哪个 URL 发出请求以及如何通过 http 调用调用函数。有什么帮助吗? 我的理解是它是一个基于项目ID的URL。看看:github.com/firebase/functions-samples/tree/master/quickstarts/… 啊,要像这样使用云功能,我是否必须将我的计划升级到非 spark 的东西才能做到这一点? 我的理解是,如果你想从函数内访问非谷歌域,你只需要升级。 【参考方案1】:直接从客户端代码调用云函数有两种主要方式。
您可以使用database trigger,它会在您的 Firebase 项目的实时数据库中的某个位置发生变化时做出响应。
您还可以在访问 HTTP 端点时使用 HTTP trigger 响应。对于 Web 应用程序,您可以使用任何您想要调用 XHR 事务的方法。
您使用哪一种取决于您应用的架构,以及在某种程度上您的偏好。在提供的sample code 中,有很多两者的样本,甚至更多。
您绝对可以使用 Firebase 管理 SDK 从您的函数代码中访问您的项目。许多样本正是这样做的。
【讨论】:
【参考方案2】:Firebase 刚刚在 3 月 20 日发布了一个新的 SDK,它允许您从客户端调用类似 HTTPS 触发器的函数,最好的部分是它会检查用户身份验证,因此您可以将函数限制为仅由经过身份验证的用户调用,并且很容易访问他们的帐户详细信息,例如电子邮件、uid、姓名等。查看更多信息: https://firebase.google.com/docs/functions/callable
【讨论】:
以上是关于有没有办法从客户端应用程序中调用 Firebase 服务器“功能”,比如 Angular 2?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法从我的 Node.js 服务器使用 Firebase Admin SDK 发送验证电子邮件?
有没有办法在 iOS 和 WatchOS 应用之间共享 Firebase Auth 登录?
Web Firebase Cloud Messaging - 如何从客户端订阅主题? [复制]