Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Федеративное удостоверение и вход через социальные сети

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Социальная аутентификация — это многоэтапный процесс аутентификации, позволяющий вам подписывать пользователя в учетную запись или связывать его с существующей.

И собственные платформы, и веб-поддержка создают учетные данные, которые затем можно передать методам signInWithCredential или linkWithCredential . В качестве альтернативы на веб-платформах вы можете запустить процесс аутентификации через всплывающее окно или перенаправление.

Google

Большая часть конфигурации уже настроена при использовании входа 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);
}

Фейсбук

Прежде чем приступить к работе, настройте приложение 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 _auth.signInWithPopup(appleProvider);
  } else {
    await _auth.signInWithAuthProvider(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 _auth.signInWithPopup(microsoftProvider);
  } else {
    await _auth.signInWithAuthProvider(microsoftProvider);
  }
}

Твиттер

Убедитесь, что поставщик входа «Twitter» включен в консоли Firebase с набором ключа API и секрета API.

iOS+ и Android

На собственных платформах требуется сторонняя библиотека как для установки Twitter SDK, так и для запуска процесса проверки подлинности.

Установите плагин twitter_login :

dependencies:
  twitter_login: ^4.0.1

Обязательно тщательно пройдите этапы настройки twitter_login и зарегистрируйте URL-адрес обратного вызова на портале разработчиков Twitter с соответствующей схемой URL-адресов.

import 'package:twitter_login/twitter_login.dart';

Future<UserCredential> signInWithTwitter() async {
  // Create a TwitterLogin instance
  final twitterLogin = new TwitterLogin(
    apiKey: '<your consumer key>',
    apiSecretKey:' <your consumer secret>',
    redirectURI: '<your_scheme>://'
  );

  // Trigger the sign-in flow
  final authResult = await twitterLogin.login();

  // Create a credential from the access token
  final twitterAuthCredential = TwitterAuthProvider.credential(
    accessToken: authResult.authToken!,
    secret: authResult.authTokenSecret!,
  );

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithCredential(twitterAuthCredential);
}

Интернет

В Интернете Twitter SDK обеспечивает поддержку автоматической обработки потока аутентификации с использованием сведений о приложении Twitter, предоставленных в консоли Firebase. Убедитесь, что URL-адрес обратного вызова в консоли Firebase добавлен в качестве URL-адреса обратного вызова в вашем приложении Twitter на их консоли разработчика.

Например:

Создайте поставщика Twitter и предоставьте учетные данные методу signInWithPopup . Это вызовет появление нового окна, предлагающего пользователю войти в ваше приложение Twitter:

Future<UserCredential> signInWithTwitter() async {
  // Create a new provider
  TwitterAuthProvider twitterProvider = TwitterAuthProvider();

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithPopup(twitterProvider);

  // Or use signInWithRedirect
  // return await FirebaseAuth.instance.signInWithRedirect(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 _auth.signInWithAuthProvider(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);
}