关于使用 firebase 进行身份验证

时间:2021-02-09 11:57:44

标签: firebase flutter firebase-authentication google-oauth

我不是在 flutter 中使用 GoogleSignedIn() 进行签名的。

我收到以下异常:-

I/flutter (22662):[firebase_auth/invalid-credential] 提供的身份验证凭证格式错误或已过期。 [无法解析谷歌id_token:ya29.A0AfH6SMDzztUqaSgwv9hTdVXkNyKQaUBMq-z2ghJRGygrSIZ032SVh6nL1m-BLAGezvXrT5AbUV7q56cozAkaUw1JAWiIARMs3fRHUUIDiCOv0p_pw0qP_vQo6Y_aBtKUu08HvNE9TqwjGu2TLWNs4DR7DjTVaA]

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/cupertino.dart';
import 'package:google_sign_in/google_sign_in.dart';

class GoogleSignInProvider extends ChangeNotifier {
  bool _isSigningIn;
  final googleSignIn = GoogleSignIn();
  GoogleSignInProvider() {
    _isSigningIn = false;
  }
  bool get isSigningIn => _isSigningIn;

  set isSigningIn(bool isSigningIn) {
    _isSigningIn = isSigningIn;
    notifyListeners();
  }

  Future login() async {
    isSigningIn = true;

    final user = await googleSignIn.signIn();
    print("user : -----$user");
    if (user == null) {
      isSigningIn = false;
      return;
    } else {
      final googleAuth = await user.authentication;
      print("googleAuth : -----${googleAuth.toString()}");
      final credential = GoogleAuthProvider.credential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.accessToken,
      );

      FirebaseAuth.instance.signInWithCredential(credential).then((credential) {
        print(credential);
        isSigningIn = false;
      }).catchError(
        (error) {
          print(error);
          isSigningIn = false;
          logOut();
        },
      );
    }
  }

  void logOut() async {
    await googleSignIn.disconnect();
    FirebaseAuth.instance.signOut();
  }
}

0 个答案:

没有答案