【发布时间】: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) => {前面吗 -
this.email可能是未定义的 -
感谢 Elmehdi,这适用于我的注册页面,但仍在与登录页面作斗争
标签: angular firebase ionic-framework google-cloud-firestore angular8