如何在Firestore中保存Google登录数据

时间:2018-06-11 22:59:05

标签: angular firebase google-cloud-firestore

我正在使用firebase创建一个项目,我在那里专门用Google实现身份验证,它运行良好,但现在我需要将注册数据保存在数据库中,这就是问题所在,我和#39 ; m关注此网址中的资料https:/ / angularfirebase.com/lessons/google-user-auth-with-firestore-custom-data /

它会产生以下错误。

消息错误

应该注意我使用的是Angular 6。

...问候

2 个答案:

答案 0 :(得分:0)

试试这段代码:

this.user$ = this.afAuth.user.pipe(
      switchMap(user => {
        if (user) {
          return this.afs
          .doc<UsuarioInterface>(`usuarios/${user.uid}`)
          .valueChanges();
        } else {
          return of(null);
        }
      })
    );

如果用户未登录,则可观察的user$将为空,否则将具有用户的数据。

答案 1 :(得分:0)

我了解无奈。但是,您也可以执行以下“修补”以实现相似的目标:

使用电子邮件注册:

  import { Injectable } from "@angular/core";
  import 'rxjs/add/operator/toPromise';
  import { AngularFireAuth } from 'angularfire2/auth';
  import * as firebase from 'firebase/app';

  @Injectable()
  export class yourAuthService {

   constructor(
   public afAuth: AngularFireAuth
    ){

     }
   .......
    ........
  ........

emailRegister(val){
return new Promise<any>((resolve, reject) => {
  firebase.auth().createUserWithEmailAndPassword(val.email, val.password)
  .then(() => {
    const user = firebase.auth().currentUser;
      var userRef = firebase.firestore().collection("users/").doc(user.uid);
      userRef.set({name: name, email: value.email,   user: 'newUser.uid', adminEmail: '' })
      .then(function (){
      })

  })
})
}

这应该可以解决问题,您将走上快乐之路!甜美而简单。您也可以将相同的方法用于社交媒体注册方法:)。是的,您可以在Angular-6中使用该代码段。希望它可以帮助您获得更好的见识和更多选择。也许有人会更好地解释不同的方法。

相关问题