Трепетание с помощью Firebase Google войти в систему: Неудачное утверждение network_image_io.dart - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь выполнить проверку подлинности Firebase и войти в Google, используя Flutter, но получаю следующее сообщение об ошибке:

'package:flutter/src/painting/_network_image_io.dart': Failed assertion: line 23 pos 14: 'url != null': is not true.

Я не могу понять, что не так, вы можете мне помочь?

фрагмент кода login.dart

-> вызывает метод signInWithGoogle () из sign_in.dart и возвращает FirstScreen

Widget _signInButton() {
    return OutlineButton(
      splashColor: Colors.grey,
      onPressed: () {
        signInWithGoogle().whenComplete(() {
          Navigator.of(context).push(
            MaterialPageRoute(
              builder: (context) {
                return FirstScreen();
              },
            ),
          );
        });
      },

sign_in. Фрагмент кода дротика:

-> Здесь я аутентифицирую пользователя и пытаюсь получить зарегистрированное имя пользователя, адрес электронной почты и изображение

final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = GoogleSignIn();

String name;
String email;
String imageUrl;

Future<String> signInWithGoogle() async {
  final GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();
  final GoogleSignInAuthentication googleSignInAuthentication =
  await googleSignInAccount.authentication;

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

  final AuthResult authResult = await _auth.signInWithCredential(credential);
  final FirebaseUser user = authResult.user;

  // Checking if email and name is null
  assert(user.email != null);
  assert(user.displayName != null);
  assert(user.photoUrl != null);

  name = user.displayName;
  email = user.email;
  imageUrl = user.photoUrl;

  // Only taking the first part of the name, i.e., First Name
  if (name.contains(" ")) {
    name = name.substring(0, name.indexOf(" "));
  }

  assert(!user.isAnonymous);
  assert(await user.getIdToken() != null);

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

  log('data:  $user');
  return 'signInWithGoogle succeeded: $user';
}

void signOutGoogle() async {
  await googleSignIn.signOut();

  print("User Sign Out");
}

Фрагмент кода FirstScreen:

-> Здесь я пытаюсь показать пользовательские данные (имя, адрес электронной почты и изображение) на основе того, что я получил по ранее написанному коду

children: <Widget>[
              CircleAvatar(
                backgroundImage: NetworkImage(
                  imageUrl,
                ),
                radius: 60,
                backgroundColor: Colors.transparent,
              ),
              SizedBox(height: 40),
              Text(
                'NAME',
                style: TextStyle(
                    fontSize: 15,
                    fontWeight: FontWeight.bold,
                    color: Colors.black54),
              ),
              Text(
                name,
                style: TextStyle(
                    fontSize: 25,
                    color: Colors.deepPurple,
                    fontWeight: FontWeight.bold),
              ),
              SizedBox(height: 20),
              Text(
                'EMAIL',
                style: TextStyle(
                    fontSize: 15,
                    fontWeight: FontWeight.bold,
                    color: Colors.black54),
              ),
              Text(
                email,
                style: TextStyle(
                    fontSize: 25,
                    color: Colors.deepPurple,
                    fontWeight: FontWeight.bold),
              ),
              SizedBox(height: 40)

РЕДАКТИРОВАТЬ: дополнительная информация -> консольный журнал показывает «Необработанный» Исключение: PlatformException (sign_in_failed, com.google. android .gms.common.api.ApiException: 10:, null) "

1 Ответ

0 голосов
/ 30 марта 2020

Я обнаружил, что ошибка, которую я получаю, связана с отсутствием некоторых настроек OAuth Credentials. Я нашел решение здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...