Социальная аутентификация — это многоэтапный процесс аутентификации, позволяющий вам подписывать пользователя в учетную запись или связывать его с существующей.
И собственные платформы, и веб-поддержка создают учетные данные, которые затем можно передать методам signInWithCredential
или linkWithCredential
. В качестве альтернативы на веб-платформах вы можете запустить процесс аутентификации через всплывающее окно или перенаправление.
Большая часть конфигурации уже настроена при использовании входа Google с Firebase, однако вам необходимо убедиться, что ключ SHA1 вашего компьютера настроен для использования с Android. Вы можете увидеть, как сгенерировать ключ в документации по аутентификации .
Убедитесь, что в консоли Firebase включена служба входа Google.
Если ваш пользователь входит в систему с помощью Google после того, как уже зарегистрировал учетную запись вручную, его поставщик аутентификации автоматически изменится на Google из-за концепции Firebase Authentications доверенных поставщиков. Вы можете узнать больше об этом здесь .
iOS+ и Android
На собственных платформах для запуска потока аутентификации требуется сторонняя библиотека.
Установите официальный плагин google_sign_in
.
После установки запустите процесс входа и создайте новые учетные данные:
import 'package:google_sign_in/google_sign_in.dart';
Future<UserCredential> signInWithGoogle() async {
// Trigger the authentication flow
final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();
// Obtain the auth details from the request
final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication;
// Create a new credential
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth?.accessToken,
idToken: googleAuth?.idToken,
);
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithCredential(credential);
}
Интернет
В Интернете Firebase SDK обеспечивает поддержку автоматической обработки потока аутентификации с помощью вашего проекта Firebase. Например:
Создайте поставщика аутентификации Google, предоставив любую дополнительную область разрешений , которую вы хотите получить от пользователя:
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
Предоставьте учетные данные методу signInWithPopup
. Это вызовет появление нового окна, предлагающего пользователю войти в ваш проект. В качестве альтернативы вы можете использовать signInWithRedirect
, чтобы сохранить процесс аутентификации в том же окне.
Future<UserCredential> signInWithGoogle() async {
// Create a new provider
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(googleProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(googleProvider);
}
Google Play Игры
Вы можете аутентифицировать пользователей в своей игре для Android с помощью входа в Play Games.
Андроид
Следуйте инструкциям по настройке Google на Android, а затем настройте сервисы Play Games с информацией о приложении Firebase .
Следующее запустит процесс входа, создаст новые учетные данные и войдет в систему пользователя:
final googleUser = await GoogleSignIn(
signInOption: SignInOption.games,
).signIn();
final googleAuth = await googleUser?.authentication;
if (googleAuth != null) {
// Create a new credential
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
// Once signed in, return the UserCredential
await _auth.signInWithCredential(credential);
}
Фейсбук
Прежде чем приступить к работе, настройте приложение Facebook Developer и выполните процесс установки, чтобы активировать вход через Facebook.
Убедитесь, что поставщик входа «Facebook» включен в Firebase Console . с идентификатором приложения Facebook и набором секретов.
iOS+ и Android
На нативных платформах требуется сторонняя библиотека как для установки Facebook SDK, так и для запуска процесса аутентификации.
Установите плагин flutter_facebook_auth
.
Вам нужно будет выполнить шаги, описанные в документации плагина, чтобы убедиться, что SDK Facebook для Android и iOS были правильно инициализированы. После завершения запустите процесс входа, создайте учетные данные Facebook и войдите в систему:
import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
Future<UserCredential> signInWithFacebook() async {
// Trigger the sign-in flow
final LoginResult loginResult = await FacebookAuth.instance.login();
// Create a credential from the access token
final OAuthCredential facebookAuthCredential = FacebookAuthProvider.credential(loginResult.accessToken.token);
// Once signed in, return the UserCredential
return FirebaseAuth.instance.signInWithCredential(facebookAuthCredential);
}
Интернет
В Интернете Firebase SDK обеспечивает поддержку автоматической обработки потока аутентификации с использованием сведений о приложении Facebook, предоставленных в консоли Firebase. Например:
Создайте поставщика Facebook, предоставив любую дополнительную область разрешений, которую вы хотите получить от пользователя.
Убедитесь, что URI перенаправления OAuth из консоли Firebase добавлен в качестве действительного URI перенаправления OAuth в вашем приложении Facebook.
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
Предоставьте учетные данные методу signInWithPopup
. Это вызовет появление нового окна, предлагающего пользователю войти в ваше приложение Facebook:
Future<UserCredential> signInWithFacebook() async {
// Create a new provider
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(facebookProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(facebookProvider);
}
Яблоко
iOS+
Прежде чем начать, настройте «Вход с Apple» и включите Apple в качестве поставщика услуг входа .
Затем убедитесь, что в ваших приложениях Runner
есть возможность «Войти через Apple».
Андроид
Прежде чем начать, настройте «Вход с Apple» и включите Apple в качестве поставщика услуг входа .
Интернет
Прежде чем начать, настройте «Вход с Apple» и включите Apple в качестве поставщика услуг входа .
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithApple() async {
final appleProvider = AppleAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(appleProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(appleProvider);
}
}
Майкрософт
iOS+
Прежде чем вы начнете настраивать Microsoft Login для iOS и добавлять пользовательские схемы URL-адресов в Runner (шаг 1) .
Андроид
Прежде чем вы начнете настраивать Microsoft Login для Android .
Не забудьте добавить отпечаток пальца SHA-1 вашего приложения.
Интернет
Прежде чем вы начнете настраивать вход Microsoft для Интернета .
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithMicrosoft() async {
final microsoftProvider = MicrosoftAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(microsoftProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(microsoftProvider);
}
}
Твиттер
Убедитесь, что поставщик входа «Twitter» включен в консоли Firebase с набором ключа API и секрета API. Убедитесь, что ваш URI перенаправления OAuth Firebase (например, my-app-12345.firebaseapp.com/__/auth/handler) установлен в качестве URL-адреса обратного вызова авторизации на странице настроек вашего приложения в конфигурации вашего приложения Twitter .
Вам также может потребоваться запросить доступ к API с повышенными правами в зависимости от вашего приложения .
iOS+
Вам необходимо настроить собственную схему URL-адресов, как описано в шаге 1 руководства iOS .
Андроид
Если вы еще не указали отпечаток пальца SHA-1 своего приложения, сделайте это на странице настроек консоли Firebase. Подробнее о том, как получить отпечаток пальца SHA-1 вашего приложения, см. в разделе Аутентификация вашего клиента .
Интернет
Работает из коробки.
import 'package:firebase_auth/firebase_auth.dart';
Future<void> _signInWithTwitter() async {
TwitterAuthProvider twitterProvider = TwitterAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(twitterProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(twitterProvider);
}
}
Гитхаб
Убедитесь, что вы настроили приложение OAuth в настройках разработчика GitHub и что поставщик входа «GitHub» включен в консоли Firebase с установленным идентификатором клиента и секретом, а URL-адрес обратного вызова установлен в приложении GitHub.
iOS+ и Android
Для нативных платформ необходимо добавить google-services.json
и GoogleService-Info.plist
.
Для iOS добавьте пользовательскую схему URL, как описано в шаге 1 руководства iOS .
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}
Интернет
В Интернете GitHub SDK обеспечивает поддержку автоматической обработки потока аутентификации с использованием сведений о приложении GitHub, предоставленных в консоли Firebase. Убедитесь, что URL-адрес обратного вызова в консоли Firebase добавлен в качестве URL-адреса обратного вызова в вашем приложении GitHub на консоли разработчика.
Например:
Создайте поставщика GitHub и предоставьте учетные данные методу signInWithPopup
. Это вызовет появление нового окна, предлагающего пользователю войти в ваше приложение GitHub:
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(githubProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(githubProvider);
}
Yahoo
Убедитесь, что поставщик входа «Yahoo» включен в консоли Firebase с набором ключа API и секрета API. Также убедитесь, что ваш URI перенаправления Firebase OAuth (например, my-app-12345.firebaseapp.com/__/auth/handler) задан как URI перенаправления в конфигурации Yahoo Developer Network вашего приложения.
iOS+
Прежде чем начать, настройте Yahoo Login для iOS и добавьте пользовательские схемы URL-адресов в Runner (шаг 1) .
Андроид
Прежде чем начать, настройте Yahoo Login для Android .
Не забудьте добавить отпечаток пальца SHA-1 вашего приложения.
Интернет
Работает из коробки.
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithYahoo() async {
final yahooProvider = YahooAuthProvider();
if (kIsWeb) {
await _auth.signInWithPopup(yahooProvider);
} else {
await _auth.signInWithProvider(yahooProvider);
}
}
Использование токена доступа OAuth
Используя AuthProvider, вы можете получить маркер доступа, связанный с поставщиком, выполнив следующий запрос.
final appleProvider = AppleAuthProvider();
final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;
// You can send requests with the `accessToken`
Связывание с провайдером аутентификации
Если вы хотите связать провайдера с текущим пользователем, вы можете использовать следующий метод: ```dart await FirebaseAuth.instance.signInAnonymous();
окончательный appleProvider = AppleAuthProvider();
if (kIsWeb) { await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// Вы также можете использовать linkWithRedirect
} else { await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }
// Ваш анонимный пользователь теперь обновлен, чтобы иметь возможность подключаться к Sign In With Apple ```
Повторная аутентификация у провайдера
Тот же шаблон можно использовать с reauthenticateWithProvider
, который можно использовать для получения новых учетных данных для конфиденциальных операций, требующих недавнего входа в систему.
final appleProvider = AppleAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.currentUser?.reauthenticateWithPopup(appleProvider);
// Or you can reauthenticate with a redirection
// await FirebaseAuth.instance.currentUser?.reauthenticateWithRedirect(appleProvider);
} else {
await FirebaseAuth.instance.currentUser?.reauthenticateWithProvider(appleProvider);
}
// You can now perform sensitive operations
,Социальная аутентификация — это многоэтапный процесс аутентификации, позволяющий вам подписывать пользователя в учетную запись или связывать его с существующей.
И собственные платформы, и веб-поддержка создают учетные данные, которые затем можно передать методам signInWithCredential
или linkWithCredential
. В качестве альтернативы на веб-платформах вы можете запустить процесс аутентификации через всплывающее окно или перенаправление.
Большая часть конфигурации уже настроена при использовании входа Google с Firebase, однако вам необходимо убедиться, что ключ SHA1 вашего компьютера настроен для использования с Android. Вы можете увидеть, как сгенерировать ключ в документации по аутентификации .
Убедитесь, что в консоли Firebase включена служба входа Google.
Если ваш пользователь входит в систему с помощью Google после того, как уже зарегистрировал учетную запись вручную, его поставщик аутентификации автоматически изменится на Google из-за концепции Firebase Authentications доверенных поставщиков. Вы можете узнать больше об этом здесь .
iOS+ и Android
На собственных платформах для запуска потока аутентификации требуется сторонняя библиотека.
Установите официальный плагин google_sign_in
.
После установки запустите процесс входа и создайте новые учетные данные:
import 'package:google_sign_in/google_sign_in.dart';
Future<UserCredential> signInWithGoogle() async {
// Trigger the authentication flow
final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();
// Obtain the auth details from the request
final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication;
// Create a new credential
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth?.accessToken,
idToken: googleAuth?.idToken,
);
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithCredential(credential);
}
Интернет
В Интернете Firebase SDK обеспечивает поддержку автоматической обработки потока аутентификации с помощью вашего проекта Firebase. Например:
Создайте поставщика аутентификации Google, предоставив любую дополнительную область разрешений , которую вы хотите получить от пользователя:
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
Предоставьте учетные данные методу signInWithPopup
. Это вызовет появление нового окна, предлагающего пользователю войти в ваш проект. В качестве альтернативы вы можете использовать signInWithRedirect
, чтобы сохранить процесс аутентификации в том же окне.
Future<UserCredential> signInWithGoogle() async {
// Create a new provider
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(googleProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(googleProvider);
}
Google Play Игры
Вы можете аутентифицировать пользователей в своей игре для Android с помощью входа в Play Games.
Андроид
Следуйте инструкциям по настройке Google на Android, а затем настройте сервисы Play Games с информацией о приложении Firebase .
Следующее запустит процесс входа, создаст новые учетные данные и войдет в систему пользователя:
final googleUser = await GoogleSignIn(
signInOption: SignInOption.games,
).signIn();
final googleAuth = await googleUser?.authentication;
if (googleAuth != null) {
// Create a new credential
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
// Once signed in, return the UserCredential
await _auth.signInWithCredential(credential);
}
Фейсбук
Прежде чем приступить к работе, настройте приложение Facebook Developer и выполните процесс установки, чтобы активировать вход через Facebook.
Убедитесь, что поставщик входа «Facebook» включен в Firebase Console . с идентификатором приложения Facebook и набором секретов.
iOS+ и Android
На нативных платформах требуется сторонняя библиотека как для установки Facebook SDK, так и для запуска процесса аутентификации.
Установите плагин flutter_facebook_auth
.
Вам нужно будет выполнить шаги, описанные в документации плагина, чтобы убедиться, что SDK Facebook для Android и iOS были правильно инициализированы. После завершения запустите процесс входа, создайте учетные данные Facebook и войдите в систему:
import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
Future<UserCredential> signInWithFacebook() async {
// Trigger the sign-in flow
final LoginResult loginResult = await FacebookAuth.instance.login();
// Create a credential from the access token
final OAuthCredential facebookAuthCredential = FacebookAuthProvider.credential(loginResult.accessToken.token);
// Once signed in, return the UserCredential
return FirebaseAuth.instance.signInWithCredential(facebookAuthCredential);
}
Интернет
В Интернете Firebase SDK обеспечивает поддержку автоматической обработки потока аутентификации с использованием сведений о приложении Facebook, предоставленных в консоли Firebase. Например:
Создайте поставщика Facebook, предоставив любую дополнительную область разрешений, которую вы хотите получить от пользователя.
Убедитесь, что URI перенаправления OAuth из консоли Firebase добавлен в качестве действительного URI перенаправления OAuth в вашем приложении Facebook.
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
Предоставьте учетные данные методу signInWithPopup
. Это вызовет появление нового окна, предлагающего пользователю войти в ваше приложение Facebook:
Future<UserCredential> signInWithFacebook() async {
// Create a new provider
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(facebookProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(facebookProvider);
}
Яблоко
iOS+
Прежде чем начать, настройте «Вход с Apple» и включите Apple в качестве поставщика услуг входа .
Затем убедитесь, что в ваших приложениях Runner
есть возможность «Войти через Apple».
Андроид
Прежде чем начать, настройте «Вход с Apple» и включите Apple в качестве поставщика услуг входа .
Интернет
Прежде чем начать, настройте «Вход с Apple» и включите Apple в качестве поставщика услуг входа .
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithApple() async {
final appleProvider = AppleAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(appleProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(appleProvider);
}
}
Майкрософт
iOS+
Прежде чем вы начнете настраивать Microsoft Login для iOS и добавлять пользовательские схемы URL-адресов в Runner (шаг 1) .
Андроид
Прежде чем вы начнете настраивать Microsoft Login для Android .
Не забудьте добавить отпечаток пальца SHA-1 вашего приложения.
Интернет
Прежде чем вы начнете настраивать вход Microsoft для Интернета .
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithMicrosoft() async {
final microsoftProvider = MicrosoftAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(microsoftProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(microsoftProvider);
}
}
Твиттер
Убедитесь, что поставщик входа «Twitter» включен в консоли Firebase с набором ключа API и секрета API. Убедитесь, что ваш URI перенаправления OAuth Firebase (например, my-app-12345.firebaseapp.com/__/auth/handler) установлен в качестве URL-адреса обратного вызова авторизации на странице настроек вашего приложения в конфигурации вашего приложения Twitter .
Вам также может потребоваться запросить доступ к API с повышенными правами в зависимости от вашего приложения .
iOS+
Вам необходимо настроить собственную схему URL-адресов, как описано в шаге 1 руководства iOS .
Андроид
Если вы еще не указали отпечаток пальца SHA-1 своего приложения, сделайте это на странице настроек консоли Firebase. Подробнее о том, как получить отпечаток пальца SHA-1 вашего приложения, см. в разделе Аутентификация вашего клиента .
Интернет
Работает из коробки.
import 'package:firebase_auth/firebase_auth.dart';
Future<void> _signInWithTwitter() async {
TwitterAuthProvider twitterProvider = TwitterAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(twitterProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(twitterProvider);
}
}
Гитхаб
Убедитесь, что вы настроили приложение OAuth в настройках разработчика GitHub и что поставщик входа «GitHub» включен в консоли Firebase с установленным идентификатором клиента и секретом, а URL-адрес обратного вызова установлен в приложении GitHub.
iOS+ и Android
Для нативных платформ необходимо добавить google-services.json
и GoogleService-Info.plist
.
Для iOS добавьте пользовательскую схему URL, как описано в шаге 1 руководства iOS .
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}
Интернет
В Интернете GitHub SDK обеспечивает поддержку автоматической обработки потока аутентификации с использованием сведений о приложении GitHub, предоставленных в консоли Firebase. Убедитесь, что URL-адрес обратного вызова в консоли Firebase добавлен в качестве URL-адреса обратного вызова в вашем приложении GitHub на консоли разработчика.
Например:
Создайте поставщика GitHub и предоставьте учетные данные методу signInWithPopup
. Это вызовет появление нового окна, предлагающего пользователю войти в ваше приложение GitHub:
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(githubProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(githubProvider);
}
Yahoo
Убедитесь, что поставщик входа «Yahoo» включен в консоли Firebase с набором ключа API и секрета API. Также убедитесь, что ваш URI перенаправления Firebase OAuth (например, my-app-12345.firebaseapp.com/__/auth/handler) задан как URI перенаправления в конфигурации Yahoo Developer Network вашего приложения.
iOS+
Прежде чем начать, настройте Yahoo Login для iOS и добавьте пользовательские схемы URL-адресов в Runner (шаг 1) .
Андроид
Прежде чем начать, настройте Yahoo Login для Android .
Не забудьте добавить отпечаток пальца SHA-1 вашего приложения.
Интернет
Работает из коробки.
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithYahoo() async {
final yahooProvider = YahooAuthProvider();
if (kIsWeb) {
await _auth.signInWithPopup(yahooProvider);
} else {
await _auth.signInWithProvider(yahooProvider);
}
}
Использование токена доступа OAuth
Используя AuthProvider, вы можете получить маркер доступа, связанный с поставщиком, выполнив следующий запрос.
final appleProvider = AppleAuthProvider();
final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;
// You can send requests with the `accessToken`
Связывание с провайдером аутентификации
Если вы хотите связать провайдера с текущим пользователем, вы можете использовать следующий метод: ```dart await FirebaseAuth.instance.signInAnonymous();
окончательный appleProvider = AppleAuthProvider();
if (kIsWeb) { await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// Вы также можете использовать linkWithRedirect
} else { await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }
// Ваш анонимный пользователь теперь обновлен, чтобы иметь возможность подключаться к Sign In With Apple ```
Повторная аутентификация у провайдера
Тот же шаблон можно использовать с reauthenticateWithProvider
, который можно использовать для получения новых учетных данных для конфиденциальных операций, требующих недавнего входа в систему.
final appleProvider = AppleAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.currentUser?.reauthenticateWithPopup(appleProvider);
// Or you can reauthenticate with a redirection
// await FirebaseAuth.instance.currentUser?.reauthenticateWithRedirect(appleProvider);
} else {
await FirebaseAuth.instance.currentUser?.reauthenticateWithProvider(appleProvider);
}
// You can now perform sensitive operations