как решить ‘Учетные данные’ не определены для типа ‘FacebookAuthProvider’

#flutter #dart #firebase-authentication

# #flutter #dart #firebase-аутентификация

Вопрос:

я использую этот код, который я получил от github :

код из github:

 Future<FirebaseUser> facebookLogin(BuildContext context) async {
    FirebaseUser currentUser;

    try {
      final FacebookLoginResult facebookLoginResult =
          await fbLogin.logIn(['email']);
      if (facebookLoginResult.status == FacebookLoginStatus.loggedIn) {
        FacebookAccessToken facebookAccessToken =
            facebookLoginResult.accessToken;
        AuthCredential credential = FacebookAuthProvider.getCredential(
            accessToken: facebookAccessToken.token);
        FirebaseUser user = (await auth.signInWithCredential(credential)).user;
        print("signed in"   user.displayName);
        return user;

      }
 

я получил 2 ошибки из приведенного выше кода:

ошибка: ожидается 1 позиционный аргумент (ы), но найдено 0. (not_enough_positional_arguments в [flutter_app] lib login_page.dart:31)

ошибка: именованный параметр ‘accessToken’ не определен. (неопределенный параметр с именем в [flutter_app] lib login_page.dart:32)

насколько я понимаю, «FirebaseUser» и «getCredential» обесценились, поэтому я изменил их на User и Credential: текущий код :

   Future<User> facebookLogin(BuildContext context) async {
    User currentUser;

    // fbLogin.loginBehavior = FacebookLoginBehavior.webViewOnly;
    // if you remove above comment then facebook login will take username and pasword for login in Webview
    try {
      final FacebookLoginResult facebookLoginResult =
      await fbLogin.logIn(['email']);
      if (facebookLoginResult.status == FacebookLoginStatus.loggedIn) {
        FacebookAccessToken facebookAccessToken =
            facebookLoginResult.accessToken;
        AuthCredential credential = FacebookAuthProvider.Credential(
            accessToken: facebookAccessToken.token);
        User user = (await auth.signInWithCredential(credential)).user;
        print("signed in"   user.displayName);
        return user;
      }
 

но теперь я получаю сообщение об ошибке :

ошибка: метод «Учетные данные» не определен для типа «FacebookAuthProvider». (undefined_method в [flutter_app] lib login_page.dart:33)

я допустил ошибку, изменив FirebaseUser на User и getCredential на Credential? как выйти из этой проблемы?

Ответ №1:

Написание credential в нижнем регистре c . Так:

 AuthCredential credential = FacebookAuthProvider.credential(
    accessToken: facebookAccessToken.token);
 

Для подобных ситуаций я нахожу документацию наиболее полезной: https://pub.dev/documentation/firebase_auth_platform_interface/latest/firebase_auth_platform_interface/FacebookAuthProvider-class.html