#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