找不到Flutter Firebase.signInWithGoogle方法

时间:2019-02-03 23:21:47

标签: firebase flutter firebase-authentication

我正在尝试在Flutter应用程序中添加Google身份验证。但是我的Android Studio无法在 FirebaseAuth 类下找到方法 signInWithGoogle 。我的意思是说当我编写FirebaseAuth时。 signInWithGoogle 。AndroidStudio抱怨说未为类Firebase定义signInWithGoogle方法

我已经拥有 Firebase.signInWithEmailAndPassword ,并且运行正常。

我在pubspec.yaml中具有以下依赖项 firebase_auth:^ 0.8.0 + 1

下面是我在课堂上的进口商品……

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:my_project/auth.dart';
import 'package:my_project/register.dart';
import 'package:my_project/signin/button_list.dart';
import 'package:my_project/signin/button_view.dart';
import 'package:my_project/utils.dart';
class _LoginPageState extends State<LoginPage> {
 final formKey = GlobalKey<FormState>();

// Google Sign In
final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance; // No errors so far
下面的

是同一类中显示错误的方法 enter image description here

此外,当我单击ctrl +空格以查看 FirebaseAuth 下的所有方法时,它根本没有显示 signInWithGoogle 方法。

enter image description here

请帮助! 在此先感谢...

3 个答案:

答案 0 :(得分:5)

查看firebase_auth github存储库中提供的示例 https://github.com/flutter/plugins/blob/master/packages/firebase_auth/example/lib/main.dart#L70

Future<String> _testSignInWithGoogle() async {
    final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
    final GoogleSignInAuthentication googleAuth =
        await googleUser.authentication;
    final AuthCredential credential = GoogleAuthProvider.getCredential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    final FirebaseUser user = await _auth.signInWithCredential(credential);
    assert(user.email != null);
    assert(user.displayName != null);
    assert(!user.isAnonymous);
    assert(await user.getIdToken() != null);

    final FirebaseUser currentUser = await _auth.currentUser();
    assert(user.uid == currentUser.uid);

    return 'signInWithGoogle succeeded: $user';
}

答案 1 :(得分:3)

从firebase_auth版本0.12.0开始,添加到接受的答案中:

  

登录方法现在返回AuthResult而不是FirebaseUser。   使用AuthResult的用户属性检索FirebaseUser。

因此,实际的正确解决方案是:

istio-system

答案 2 :(得分:0)

代替使用fireebaseauth.signInWithGoogle(已弃用)
使用:

{{
    config(
        materialized='incremental'
    )
}}

<MERGE QUERY HERE> 

{% if is_incremental() %}
where last_modified_date > '2020-07-11'
{% endif %}

您的代码将如下所示:

AuthCredential credential = GoogleAuthProvider.getCredential(
    idToken: googleSignInAuthentication.idToken,
    accessToken: googleSignInAuthentication.accessToken
);