es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Un valor de tipo ‘OAuthCredential’ no puede asignarse a una variable de tipo ‘GoogleAuthCredential’.

Este es mi código para iniciar sesión en Google:

onPressed: () async{
    final GoogleSignInAccount newuser = await GoogleSignIn().signIn();
    final GoogleSignInAuthentication newuserauth = await newuser.authentication;
    final OAuthCredential cred = GoogleAuthProvider.credential(accessToken: newuserauth.accessToken, idToken: newuserauth.idToken);
    await FirebaseAuth.instance.signInWithCredential(cred);
},

Y los errores que estoy recibiendo son los siguientes:

error: No se puede asignar un valor de tipo 'OAuthCredential' a una variable de tipo 'GoogleAuthCredential'. (invalid_assignment at [firebase] lib\firstpage.dart:147)

error: El nombre 'googleUser' no está definido. (undefined_identifier at [firebase] lib\firstpage.dart:145)

error: No se puede asignar un valor de tipo 'GoogleSignInAccount?' a una variable de tipo 'GoogleSignInAccount'. (invalid_assignment at [firebase] lib\firstpage.dart:144)

Estas son las dependencias en mi archivo pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  firebase_auth: ^3.2.0
  firebase_core : ^1.10.0
  flutter_spinkit: ^5.1.0
  cloud_firestore: ^3.1.0
  google_sign_in: ^5.2.1
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El código para el inicio de sesión de Google parece estar usando una versión desactualizada de la clase GoogleAuthCredential. La declaración de importación correcta debería ser:

    import 'package:firebase_auth/firebase_auth.dart';
    

    Y luego, reemplace la siguiente línea:

    final GoogleAuthCredential cred = GoogleAuthProvider.credential(
        accessToken: newuserauth.accessToken, idToken: newuserauth.idToken);
    

    con esta:

    final OAuthCredential cred = GoogleAuthProvider.credential(
        accessToken: newuserauth.accessToken, idToken: newuserauth.idToken);
    

    Además, parece haber un problema con la variable indefinida googleUser. Debe ser reemplazada con newuser en la siguiente línea:

    final GoogleSignInAuthentication newuserauth= await googleUser.authentication;
    

    debe ser

    final GoogleSignInAuthentication newuserauth= await newuser.authentication;
    

    Por último, parece haber un problema con la asignación de variables. Reemplace la siguiente línea:

    final GoogleSignInAccount newuser= await GoogleSignIn().signIn();
    

    con

    GoogleSignInAccount? newuser = await GoogleSignIn().signIn();
    

    Esto debería solucionar los errores relacionados con el código de inicio de sesión de Google.

Comments are closed.