javascript - “用户”不可分配给类型 'void'

标签 javascript angular firebase firebase-authentication ionic4

我已经被 Ionic 4 和 Firestore 困住了几个月。有一次我去了 Firestore 和 Ionic 4,很多东西都坏了,所以我从头开始。我正在关注适用于 iOS 和 Android 的 AngularFirebase Ionic Google Login Youtube 教程,但收到以下错误:

[ng] src/app/pages/login/login.page.ts(35,7) 中出现错误:错误 TS2322:类型“User”无法分配给类型“void”。

我使用与教程中完全相同的代码,但不确定为什么会收到此错误。

    import { Component, OnInit } from '@angular/core';
    import * as firebase from 'firebase/app';
    import { AngularFireAuth } from 'angularfire2/auth';
    import { Observable, of } from 'rxjs';
    import { GooglePlus } from '@ionic-native/google-plus/ngx';
    import { environment } from '../../../environments/environment';

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

  user: Observable<firebase.User>;

  constructor(private afAuth: AngularFireAuth,
               private gplus: GooglePlus) {

        this.user = this.afAuth.authState;
      }
  googleLogin() {
    this.nativeGoogleLogin();
  }

    async nativeGoogleLogin(): Promise<void> {
      try {

      const gplusUser = await this.gplus.login({
        'webClientId': environment.googleWebClientId,
        'offline': true,
        'scopes': 'profile email'
      });

           return await this.afAuth.auth.signInWithCredential(
         firebase.auth.GithubAuthProvider.credential(gplusUser.idToken)
      );

          } catch (err) {
              console.log(err);
          }
        }
      }

最佳答案

signInWithCredential返回 firebase.User对象,因此您可以将函数的返回类型更改为 Promise<firebase.User> .

async nativeGoogleLogin(): Promise<firebase.User> {
      try {

      const gplusUser = await this.gplus.login({
        'webClientId': environment.googleWebClientId,
        'offline': true,
        'scopes': 'profile email'
      });

           return await this.afAuth.auth.signInWithCredential(
         firebase.auth.GithubAuthProvider.credential(gplusUser.idToken)
      );

          } catch (err) {
              console.log(err);
          }
        }
      }

关于javascript - “用户”不可分配给类型 'void',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54758454/

相关文章:

javascript - 用于基于索引动态创建时间的 For 循环逻辑

angular - 使用 .Net 核心的 Angular App 中的基本 URL

angular - 如何从 displaywith mat-slider 属性中的组件获取值

swift - 如何删除 Firestore 字典值?

scripting - 如何根据浏览器大小切换2个脚本?

javascript - 如何使用 Objective-C 解析需要 JavaScript 的 HTML

javascript - 如何使用 React-Router 将页面限制为访客用户?

javascript - firebase/firestore 文档查询不工作 - javascript

javascript - 在 CLI 中和通过 node.js 脚本运行时,执行 PHP 脚本有不同的结果

带有 Angular Material 声明的 Angular 编译警告