将 Firebase 管理员与 Angular 4 项目集成

Posted

技术标签:

【中文标题】将 Firebase 管理员与 Angular 4 项目集成【英文标题】:Integrating Firebase admin with Angular 4 project 【发布时间】:2018-03-29 09:10:54 【问题描述】:

尝试将 firebase-admin 添加到我的 Angular 项目中,但出现我无法解决的错误(见屏幕截图)

npm install google-cloud 但这只会导致更多错误 (来自android并试图自己弄清楚,但在这里我遗漏了一些东西并且不知道到底是什么)

我的app.component.ts

import Component from '@angular/core';

@Component(
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
  )
  export class AppComponent 
 constructor() 
const admin = require('firebase-admin');
const serviceAccount = 
require("C:/Users/Pawel/Desktop/CODE/pamiAdmin3/src/app/serviceKey.json");

admin.initializeApp(
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://pami-16c0f.firebaseio.com'
  );
 
 

【问题讨论】:

admin SDK 只能在服务器上使用,不能供最终用户访问(参见Add the Firebase Admin SDK to your Server 页面顶部的警告)。 @Jeff 那将是一个服务器页面...:S Admin SDK 仅用于受信任的服务器环境 - 例如您控制的 Node.JS 服务器。应通过数据库安全规则为选定的用户提供更多访问权限以查看/更改数据库中的内容 因为 Angular 是一个前端服务,任何有权访问该站点的人都可以获得您的服务密钥。这不是 firebase-admin 的使用方式。 @sketchthat -所以该错误的原因是因为我使用的是角度?我应该使用 node.js 制作一个 api,然后将其连接到我管理用户的 Angular 站点 - 这是正确的方法吗? 【参考方案1】:

您应该使用 Node.js 和 firebase-admin 实现您的管理 API,然后将其部署在服务器中。然后,您的 Angular 应用程序可以在需要执行某些管理功能时连接到它。将 ID 令牌从 Angular 应用程序传递到服务器,在那里可以使用 Admin SDK 对其进行验证,以确保调用者具有所需的管理员权限。

【讨论】:

我试图理解这一点,而不是在 AWS S3 网站的 Angular 示例上部署它我需要在 AWS Lambda 上添加它,因为 s3 是可访问的?

以上是关于将 Firebase 管理员与 Angular 4 项目集成的主要内容,如果未能解决你的问题,请参考以下文章

Angular 4 firebase 下拉选择标签选项

如何将 Firebase 隐形 reCAPTCHA 用于 Angular Web 应用程序?

无法使用具有来自 firebase 角色的 Angular AuthGuard

Angular 4 Firebase angularfire 按值对列表进行排序

使用 Firebase 云功能为带有 i18n 的 Angular 10 s-s-r 通用应用程序提供服务

允许用户在使用angular firebase与google注册时,选择用哪个邮箱注册。