Я хочу включить вход Microsoft в это приложение Flutter. В моей школе проводится соревнование, и у всех участников есть учетные записи Microsoft. Интеграция этих учетных записей в мобильное приложение была бы полезной. Я уже реализовал веб-версию, которая проверяет подлинность с помощью Firebase. Теперь я планирую создать мобильную версию, которая также будет аутентифицироваться в Firebase через учетные записи Microsoft. Как я могу этого добиться? Можно ли использовать всплывающий экран на мобильном телефоне, аналогичный веб-версии? Ниже приведен код, который обеспечивает эту функциональность в Интернете, и я хочу адаптировать его для мобильных устройств. В настоящее время эта функция запускает всплывающее окно при нажатии кнопки, помогая пользователям пройти через процесс входа в систему Microsoft. Однако у меня также есть поля электронной почты и пароля, которые можно использовать для мобильной реализации.
_loginWithMicrosoft() async {
try {
final provider = OAuthProvider("microsoft.com");
provider.setCustomParameters({
"tenant": "common",
"prompt": "select_account",
});
// MicrosoftAuthCredential mAuth = Credential();
debugPrint("Trying to pop-up microsoft login");
UserCredential cred;
if (kIsWeb) {
debugPrint("On the web");
FirebaseAuth.instance.signOut();
cred = await FirebaseAuth.instance.signInWithPopup(provider);
debugPrint(cred.user?.displayName);
debugPrint(cred.user?.email);
} else {
debugPrint("Not on web");
try {
// TODO implement normal sign in without microsoft
// given a username & password, send info and authenticate // firebase with microsoft login info. If possible w/ popup
// cred = await FirebaseAuth.instance.whateverMethodGetsLoginAtMicroSoft
} on FirebaseAuthException catch (e) {
errorMessage = "${e.code} - ${e.message}";
debugPrint(errorMessage);
}
}
} on FirebaseAuthException catch (e) {
errorMessage = "${e.code} - ${e.message}";
debugPrint(errorMessage);
}
}





см. федеративная аутентификация#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);
}
}