【问题标题】:Problem in auth user “First argument ”email“ must be a valid string” Ionic身份验证用户中的问题“第一个参数”电子邮件“必须是一个有效的字符串”离子
【发布时间】:2021-02-10 00:37:09
【问题描述】:

我的 ionic 注册和登录页面出现问题,我已尽我所能修复,但我不知道错误的类型,谁能解释一下,我现在无法登录或注册。我使用firebase实时数据库作为后端,我不知道问题出在哪里。

代码:“身份验证/参数错误” ​

消息:“createUserWithEmailAndPassword 失败:第一个参数“email”必须是有效字符串。” ​

ngDebugContext: Object { view: {…}, nodeIndex: 56, nodeDef: {…}, … } ​

ngErrorLogger: 函数 logError() ​​​ 堆栈:“”

HTML

  <ion-content [fullscreen]="true" class="ion-padding">
  <div class="container">
   
   <div class="title">
     <span>Welcome to</span>
     <h2>Scrow Mobile App</h2>
     <p>Signup to start experiencing best bitcoin features.</p>
   </div>
 
   <div class="form">
     <div>
      <ion-item>
     <ion-icon slot="start" name="person-outline"></ion-icon>
        <ion-input type="text" placeholder="Full Name" [(ngModel)]="name"></ion-input>
      </ion-item>

      <ion-item>
        <ion-icon slot="start" name="at-circle-outline"></ion-icon> 
           <ion-input type="text" placeholder="Username" [(ngModel)]="username"></ion-input>
         </ion-item>

       <ion-item>
        <ion-icon slot="start" name="mail-outline"></ion-icon>
         <ion-input type="text" placeholder="Email" [(ngModel)]="email"></ion-input>
       </ion-item>

       <ion-item>
         <ion-icon slot="start" name="key-outline"></ion-icon>
         <ion-input type="password" placeholder="Password" [(ngModel)]="password"></ion-input>
       </ion-item>

       <ion-button expand="block" (click)="register()">
         <div class="btn-container">
           <span>Sign Up</span>
         <ion-icon name="arrow-forward-outline"></ion-icon>
         </div>
       </ion-button>
     </div>
     <div class="ion-text-center">
       <span>Have an account? <a [routerLink]="[ '/login']">Sign In</a></span>
     </div>
   </div>
 
  </div>
   
 </ion-content>

register.page.ts

import { Component, OnInit } from '@angular/core';
import { LoginService } from '../services/login.service';

@Component({
  selector: 'app-register',
  templateUrl: './register.page.html',
  styleUrls: ['./register.page.scss'],
})
export class RegisterPage implements OnInit {
  name: any;
  username: any;
  email: any;
  password: any;
  img: any;

  constructor(
    private loginService: LoginService
  ) { }

  ngOnInit() {
  }

  register() {
    this.loginService.register(this.name, this.username, this.email, this.password, this.img);
  }
}

登录服务

import { Injectable } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
import { AngularFireDatabase } from '@angular/fire/database';
import { auth } from 'firebase/app';

import { LoadingService } from './loading.service';
import { Platform } from '@ionic/angular';

import { environment } from 'src/environments/environment.prod';
import { Router } from '@angular/router';

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

  constructor(
    private afAuth: AngularFireAuth,
    private afdb: AngularFireDatabase,
    private loadingProvider: LoadingService,
    private platform: Platform,
    private router: Router,
  ) { }

  login(email, password) {
    this.afAuth.auth.signInWithEmailAndPassword(email, password).then((res) => {
      console.log(res)
    }).catch(err => {
      console.log(err);
    })
  }

  register(name, username, email, password, img) {
    this.loadingProvider.show();
    this.afAuth.auth.createUserWithEmailAndPassword(email, password).then((res) => {
      let user: any = this.afAuth.auth.currentUser;
      this.loadingProvider.hide();
      this.createNewUser(user.uid, name, username, user.email, "I am available", "Firebase", img);
    }).catch(err => {
      console.log(err);
      this.loadingProvider.hide();
      this.loadingProvider.showToast(err.message);
    })
  }

提前致谢

【问题讨论】:

  • 你能把console.log(email)放在this.afAuth.auth.createUserWithEmailAndPassword(email, password).then((res) =&gt; {前面吗
  • this.email 可能是未定义的
  • 感谢 Elmehdi,这适用于我的注册页面,但仍在与登录页面作斗争

标签: angular firebase ionic-framework google-cloud-firestore angular8


【解决方案1】:

看看下面类似的解决方案。

// Email and password
af.auth.login({
  email: 'email@example.com',
  password: 'password',
},
{
  provider: AuthProviders.Password,
  method: AuthMethods.Password,
})

...如果您使用用户名和密码,那么您必须使用用户的凭据调用 af.auth.login()。

af.auth.login({ email: 'email', password: 'pass' });

AngularFire2 Authentication Error: First argument "email" must be a valid string

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-26
    • 2021-02-08
    • 2018-03-23
    • 2018-03-04
    • 2020-09-24
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多