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'});
→ Ссылка