आयनिक, फायरबेस: फायरबेस प्रमाणीकरण से सभी उपयोगकर्ता ईमेल कैसे प्राप्त करें

Dec 28 2020

मैं उन सभी उपयोगकर्ताओं के उपयोगकर्ता ईमेल प्राप्त करने की कोशिश कर रहा हूं जो मेरे फायरबेस प्रमाणीकरण स्टोर में हैं, मुझे इस जानकारी की आवश्यकता है ताकि मैं उपयोगकर्ता को सिस्टम के भीतर एक दूसरे को संदेश दे सकूं। im आयनिक के साथ बहुत अनुभवी नहीं है तो मुझे क्षमा करें यदि यह एक बेवकूफ सवाल है। मुझे उपयोगकर्ताओं के ईमेल में लॉग इन की आवश्यकता नहीं है, मेरे पास पहले से ही पहुंच है, लेकिन उन सभी तक पहुंचने में परेशानी हो रही है।

लॉगिन कोड, निश्चित रूप से यदि आवश्यक नहीं है।

// login.page.ts
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';
import { NavController } from '@ionic/angular';
import { AuthenticationService } from '../services/authentication.service';

@Component({
  selector: 'app-login',
  templateUrl: './login.page.html',
  styleUrls: ['./login.page.scss'],
})
export class LoginPage implements OnInit {

  validations_form: FormGroup;
  errorMessage: string = '';

  constructor(

    private navCtrl: NavController,
    private authService: AuthenticationService,
    private formBuilder: FormBuilder

  ) { }

  ngOnInit() {

    this.validations_form = this.formBuilder.group({
      email: new FormControl('', Validators.compose([
        Validators.required,
        Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')
      ])),
      password: new FormControl('', Validators.compose([
        Validators.minLength(5),
        Validators.required
      ])),
    });
  }


  validation_messages = {
    'email': [
      { type: 'required', message: 'Email is required.' },
      { type: 'pattern', message: 'Please enter a valid email.' }
    ],
    'password': [
      { type: 'required', message: 'Password is required.' },
      { type: 'minlength', message: 'Password must be at least 5 characters long.' }
    ]
  };


  loginUser(value) {
    this.authService.loginUser(value)
      .then(res => {
        console.log(res);
        this.errorMessage = "";
        this.navCtrl.navigateForward('/welcome');
      }, err => {
        this.errorMessage = err.message;
      })
  }

  goToRegisterPage() {
    this.navCtrl.navigateForward('/register');
  }

}

रजिस्टर कोड

// register.page.ts
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';
import { AuthenticationService } from '../services/authentication.service';
import { NavController } from '@ionic/angular';

@Component({
  selector: 'app-register',
  templateUrl: './register.page.html',
  styleUrls: ['./register.page.scss'],
})
export class RegisterPage implements OnInit {


  validations_form: FormGroup;
  errorMessage: string = '';
  successMessage: string = '';

  validation_messages = {
    'email': [
      { type: 'required', message: 'Email is required.' },
      { type: 'pattern', message: 'Enter a valid email.' }
    ],
    'password': [
      { type: 'required', message: 'Password is required.' },
      { type: 'minlength', message: 'Password must be at least 5 characters long.' }
    ]
  };

  constructor(
    private navCtrl: NavController,
    private authService: AuthenticationService,
    private formBuilder: FormBuilder
  ) { }

  ngOnInit() {
    this.validations_form = this.formBuilder.group({
      email: new FormControl('', Validators.compose([
        Validators.required,
        Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')
      ])),
      password: new FormControl('', Validators.compose([
        Validators.minLength(5),
        Validators.required
      ])),
    });
  }

  tryRegister(value) {
    this.authService.registerUser(value)
      .then(res => {
        console.log(res);
        this.errorMessage = "";
        this.successMessage = "Your account has been created. Please log in.";
      }, err => {
        console.log(err);
        this.errorMessage = err.message;
        this.successMessage = "";
      })
  }

  goLoginPage() {
    this.navCtrl.navigateForward('/login');
  }


}

मैं क्या पाने की कोशिश कर रहा हूँ कुछ ऐसा होगा

  1. उपयोगकर्ता एक सूची / विकल्प पर क्लिक करता है
  2. उपयोगकर्ता एक ईमेल चुनता है
  3. किसी भी संदेश सामग्री को वह साझा करना चाहता है, मैं एक छोटा सा स्निपेट साझा करूँगा
<ion-select>
    <ion-select-option value="email1">email1</ion-select-option>
    <ion-select-option value="email2">email2</ion-select-option>
    <ion-select-option value="email3">email3</ion-select-option>
    <ion-select-option value="email4">email4/ion-select-option>
  </ion-select> //probably will use *ngFor to do this.

प्रमाणीकरण सेवा स्क्रीनशॉट

जवाब

FrankvanPuffelen Dec 28 2020 at 00:42

सिस्टम में सभी उपयोगकर्ताओं के ईमेल पते प्राप्त करने के लिए क्लाइंट-साइड फायरबेस प्रमाणीकरण एसडीके का कोई तरीका नहीं है, क्योंकि यह एक संभावित सुरक्षा जोखिम होगा।

यदि आपके ऐप को इस कार्यक्षमता की आवश्यकता है, तो आपको इसे स्वयं बनाना होगा। दो सबसे आम विकल्प हैं:

  1. एक कस्टम सर्वर-साइड एपीआई को लागू करें जो फायरबेस व्यवस्थापक एसडीके का उपयोग करता है, जिसमें ऐसी कार्यक्षमता है।
  2. एक डेटाबेस में आवश्यक उपयोगकर्ता डेटा को स्टोर करें, जैसे कि फायरबेस का रियलटाइम डेटाबेस या क्लाउड फायरस्टार, और क्लाइंट को वहां तक ​​पहुंचना चाहिए।

दोनों स्थितियों में आपका ऐप नियंत्रित करता है कि आपके उपयोगकर्ताओं के बारे में कौन सा डेटा उजागर हुआ है, जो सुरक्षा चिंता का समाधान करता है।

यह भी देखें:

  • उन उपयोगकर्ताओं की सूची पुनः प्राप्त करना जिन्होंने फायरबेस ऑथेंट का उपयोग करके पंजीकरण किया है
  • AngularFire के साथ उपयोगकर्ता ईमेल पते की सूची प्राप्त करें
  • फायरबेस में सभी पंजीकृत प्रमाणीकरण ईमेल कैसे प्राप्त करें