# #firebase #flutter #google-authenticator
Вопрос:
Я новичок в флаттере . Я разрабатываю одно приложение с использованием серверной базы данных в режиме реального времени . Я хочу использовать токен для работы с клиентами, поэтому я использую аутентификацию Google с firebase. чтобы создать экран входа в систему .Он возвращает маркер идентификатора как null.Поэтому я не смог получить идентификационный жетон. Я попробую много способов, но это не удалось
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
//import 'package:shared_preferences/shared_preferences.dart';
import 'package:cake/models/http_exception.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
class GoogleSignInProvider extends ChangeNotifier {
final googleSignIn = GoogleSignIn();
String? _idToken;
// String? _userId;
// String? get userid {
// return _userId;
// }
String? get idToken {
return _idToken;
}
GoogleSignInAccount? _user;
GoogleSignInAccount get user => _user!;
Future googleLogin() async {
final googleUser = await googleSignIn.signIn();
if (googleUser == null) return;
_user = googleUser;
final googleAuth = await googleUser.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken, idToken: googleAuth.idToken);
// final result = await googleSignIn.signIn();
// final ggAuth = await result!.authentication;
// print(ggAuth.idToken);
// print("srk is ass");
// print(ggAuth.accessToken);
googleSignIn.signIn().then((result) {
result!.authentication.then((googleKey) {
_idToken = googleKey.idToken;
print(googleKey.accessToken);
print(googleKey.idToken);
print(googleSignIn.currentUser!.displayName);
}).catchError((err) {
print('inner error');
});
}).catchError((err) {
print('error occured');
});
// print(_idToken);
// print('ckodk');
await FirebaseAuth.instance.signInWithCredential(credential);
notifyListeners();
}
Future logout() async {
await googleSignIn.disconnect();
FirebaseAuth.instance.signOut();
notifyListeners();
}
}