代码之家  ›  专栏  ›  技术社区  ›  Sam

找不到Flatter Firebase.signWithGoogle方法

  •  0
  • Sam  · 技术社区  · 6 年前

    用谷歌登录 在下面 FirebaseAuth 班我是说当我写FirebaseAuth的时候。 用谷歌登录 安卓工作室抱怨说 没有为类Firebase定义signInWithGoogle方法 .

    我已经有了 它工作得很好。

    我在pubspec.yaml中有以下依赖项 firebase_认证:^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+space以查看下面的所有方法时 FirebaseAuth 用谷歌登录 方法。

    enter image description here

    请帮忙! 先谢谢你。。。

    1 回复  |  直到 6 年前
        1
  •  11
  •   Abhijith K    4 年前

    查看firebase_auth github repo中提供的示例 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 AuthResult authResult = await _auth.signInWithCredential(credential);
        final FirebaseUser user = authResult.user;
        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';
    }
    
        2
  •  5
  •   Gligor Atanasovski    5 年前

    自firebase_auth版本0.12.0以来,添加到接受的答案:

    authUser返回的结果不是现在的firesign方法。 使用AuthResult的user属性检索FirebaseUser。

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

    ...
        final AuthResult authResult = await _auth.signInWithCredential(credential);
        final FirebaseUser user = authResult.user;
    ...
    
        3
  •  1
  •   Boken forcewill    4 年前

    而不是使用fireebaseauth.signiWithGoogle(已折旧)
    使用:

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

    您的代码如下所示:

    Future handleSign() async {
    preferences = await SharedPreferences.getInstance();
    setState(() {
      loading = true;
    });
    
    GoogleSignInAccount googleUser = await googleSignIn.signIn();
    GoogleSignInAuthentication googleSignInAuthentication = await googleUser
        .authentication;
    AuthCredential credential = GoogleAuthProvider.getCredential(
        idToken: googleSignInAuthentication.idToken,
        accessToken: googleSignInAuthentication.accessToken);
    }