使用firebase-admin,nodejs和angular 6

时间:2018-09-24 22:45:16

标签: node.js firebase firebase-authentication angular6 firebase-admin

我想(作为管理员)使用node.js使用firebase-admin创建用户并处理Angular 6 App中的所有内容。

node.js中的firebase-admin就像一个魅力,但是当我必须实现处理用户创建的功能时,就像我坚持的那样。

所以,主要问题是:如何编辑服务器代码以从我的角度应用程序获取输入数据,然后使用这些值创建用户?我尝试过

router.route('/patient-add').get((req, res) => {
  if (res.send) {
    admin.auth().createUser({
      email: req.body.email
     })

但没有任何反应。

这是我的nodejs代码(server.js)

import express from 'express';
import * as admin from 'firebase-admin';
import cors from 'cors';
import bodyParser from 'body-parser';

const app = express();
const router = express.Router();
const superserviceadminKey = 'path/to/serviceAccountKey.json';

app.use(cors());
app.use(bodyParser.json());

admin.initializeApp({
  credential: admin.credential.cert(superserviceadminKey),
  databaseURL: 'https://mysuperdatabase.firebaseio.com'
});

app.use('/', router);

router.route('/patient-add').get((req, res) => {
  if (res.send) {
    admin.auth().createUser({
      email: "someemail2@gmail.com",
      emailVerified: false,
      phoneNumber: "+198089930",
      password: "secretPassword",
      displayName: "Luciphagous, the dog",
      photoURL: "http://www.example.com/12345678/photo.png"
     })
      .then(function(userRecord) {
        // See the UserRecord reference doc for the contents of userRecord.
        console.log("Successfully created new user:", userRecord.uid);
      })
      .catch(function(error) {
        console.log("Error creating new user:", error);
      });
  }
});

app.listen(6666, () => console.log('Express server running on port 6666'));

正如我之前说过的,上面的代码工作得很好。问题是我必须在Firebase中创建用户之前将值放入。我可以从HTML表单中获取值并将其从前端注入到后端吗?

所以,我猜想我可以使用Angular来解决这个问题,并创建了一个服务。这是代码:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class AuthService {

  uri = 'http://localhost:6666';

  constructor(private http: HttpClient) { }

  createUser(displayName, email, pass, phoneNumber) {
    const userReg = {
      displayName: displayName,
      email: email,
      password: pass,
      phoneNumber: phoneNumber
    };
    return this.http.post(`${this.uri}/patient-add`, userReg);
  }
}

当我在Angular App中执行它时,我收到此错误:

patients-add.component.ts:28 HttpErrorResponse {headers: HttpHeaders, status: 404, statusText: "Not Found", url: "http://localhost:4000/patient-add", ok: false, …}

Patient-add.component.ts的第28行是这样的:

this.auth.createUser('John Doe', 'hello@gmail.com', 'superpassword', '+12389298').toPromise().then(result => {
  console.log(result);
}).catch(err => {
  console.log(err);
});

提前感谢大家!

0 个答案:

没有答案