Flutter Web Google Войти

Я пытаюсь реализовать вход через Google во Flutter Web. Я использую GoogleSignn 4.1.1 и Firebase Auth 0.15.4. Я не получаю сообщения об ошибке. Просто не всплывает.

  • Я зарегистрировал веб-приложение в Firebase (добавленные зависимости) и даже добавил <meta> Отметьте google-signin-client_id
  • Firebase Auth с Google работает, когда я запускаю его на Android
  • Я также запустил приложение Example из GoogleSignIn в Интернете. Тоже не всплывает.

Это мой код входа (работает на Android)

    final FirebaseAuth _auth = FirebaseAuth.instance;
    FirebaseUser user = await _auth.currentUser();
    if (user != null) {
      log.d('alreadyLoggedIn');
    } else {
      final GoogleSignIn _googleSignIn = GoogleSignIn(clientId: Constants.GOOGLE_SIGN_IN_CLIENT_ID);
      final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
      final GoogleSignInAuthentication googleAuth =
          await googleUser.authentication;
      final AuthCredential credential = GoogleAuthProvider.getCredential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );
      await _auth.signInWithCredential(credential);
      user = await _auth.currentUser();
      assert(user.email != null);
      assert(user.displayName != null);
      assert(!user.isAnonymous);
      assert(await user.getIdToken() != null);
    }
    return user;
    }

Надеюсь, кто-то знает, как это можно исправить.

2 ответа

Вы выполнили все инструкции (включая добавление идентификатора OAuth в index.html) с этой страницы?https://pub.dev/packages/google_sign_in_web

Вы получите свой ИДЕНТИФИКАТОР КЛИЕНТА на https://console.developers.google.com/apis/credentials.

Вы также должны запускать из терминала, как это, чтобы он работал на localhost при отладке:

flutter run -d chrome --web-hostname localhost --web-port 5000

Авторизованный порт по умолчанию - 5000, вы можете добавить другие URI на той же странице, где у вас есть ИД КЛИЕНТА (например, 8764367243864-987523.apps.googleusercontent.com), он находится в разделе "Авторизованные источники JavaScript" https://console.developers.google.com/apis/credentials)

      import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Google Sign-In Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: signInWithGoogle,
            child: Text('Sign in with Google'),
          ),
        ),
      ),
    );
  }
}

Future<void> signInWithGoogle() async {
  final String googleClientId = "your_client_id_here";

  try {
    final GoogleSignInAccount? googleUser = await GoogleSignIn(
      clientId: googleClientId,
    ).signIn();

    if (googleUser != null) {
      // You've successfully signed in with Google.
      // Now you can use the googleUser object to access user information.
      // For example: googleUser.displayName, googleUser.email, etc.
      print('Signed in with Google: ${googleUser.displayName}');
    } else {
      // The user cancelled the sign-in process.
      print('Google Sign-In cancelled.');
    }
  } catch (error) {
    // Handle any errors that might occur during the sign-in process.
    print("Error during Google Sign-In: $error");
  }
}

Не забудьте заменить «your_client_id_here» своим фактическим идентификатором клиента Google API.

Другие вопросы по тегам