Firebase Flutter Авторизация через Microsoft
Можно ли во флаттере реализовать авторизацию через firebase и Microsoft? В документации Firebase сказано о разных соцсетях, но не про Microsoft, однако в методах авторизации в консоли Firebase он присутствует
Ответы (1 шт):
Автор решения: MiT
→ Ссылка
На основе документации можно сделать так (работает только для Flutter Web):
final FirebaseAuth auth = FirebaseAuth.instance;
final OAuthProvider provider = OAuthProvider('microsoft.com');
// Необязательно: укажите дополнительные настраиваемые параметры OAuth, которые вы хотите отправить с запросом OAuth.
provider.setCustomParameters({
'prompt': 'consent',
'login_hint': '[email protected]'
});
// Необязательно: укажите дополнительные области OAuth 2.0 помимо базового профиля, которые вы хотите запросить у поставщика проверки подлинности.
provider.addScope('mail.read');
provider.addScope('calendars.read');
// Аутентифицирует клиента Firebase с помощью потока аутентификации OAuth на основе всплывающих окон.
UserCredential user = await auth.signInWithPopup(provider);
// Или аутентифицирует клиента Firebase с помощью потока перенаправления на всю страницу.
await auth.signInWithRedirect(provider);
UserCredential user = await auth.getRedirectResult();
// В дальнейшем вам нужно запомнить AuthCredential из UserCredential.credential и использовать его для аутентификации
UserCredential user = await auth.signInWithCredential(credential);
Для Flutter Android/iOS придется использовать плагин firebase_auth_oauth:
User user = await FirebaseAuthOAuth().openSignInFlow(
"microsoft.com", ["email openid"], {'tenant': 'your-tenent-id'});
// Или вы можете связать существующего вошедшего в систему пользователя
User user = await FirebaseAuthOAuth()
.linkExistingUserWithCredentials("microsoft.com", ["email openid"], {'tenant': 'your-tenent-id'});