Создайте пользователя с помощью firebase-admin, nodejs и angular 6 - PullRequest
0 голосов
/ 25 сентября 2018

Я хочу - как администратор - создать пользователя с помощью firebase-admin с помощью node.js и обработать все это внутри приложения Angular 6.

Firebase-admin в node.js работает как чудоно когда мне нужно реализовать функции для управления созданием пользователя и тому подобное, когда я застреваю.

Итак, главный вопрос: как мне отредактировать код моего сервера, чтобы получитьвходные данные из моего углового приложения, а затем создать пользователя с этими значениями? Я пытался с

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, я получаю эту ошибку:

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

Строка 28 of Patient-add.component.ts такова:

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

Спасибо всем заранее!

...