Uwierzytelnianie społecznościowe to wieloetapowy proces uwierzytelniania, umożliwiający zalogowanie użytkownika na konto lub połączenie go z istniejącym.
Zarówno platformy natywne, jak i strony internetowe obsługują tworzenie poświadczeń, które można następnie przekazać do signInWithCredential
lub linkWithCredential
. Alternatywnie na platformach internetowych możesz uruchomić proces uwierzytelniania poprzez wyskakujące okienko lub przekierowanie.
Większość konfiguracji jest już skonfigurowana podczas korzystania z logowania Google w Firebase, jednak musisz się upewnić, że klucz SHA1 Twojego komputera został skonfigurowany do użytku z Androidem. Sposób wygenerowania klucza można zobaczyć w dokumentacji uwierzytelniania .
Upewnij się, że dostawca logowania „Google” jest włączony w konsoli Firebase .
Jeśli Twój użytkownik zaloguje się w Google, po ręcznym zarejestrowaniu konta, jego dostawca uwierzytelniania automatycznie zmieni się na Google, ze względu na koncepcję zaufanych dostawców Firebase Authentication. Więcej na ten temat możesz dowiedzieć się tutaj .
iOS+ i Androida
Na platformach natywnych do uruchomienia przepływu uwierzytelniania wymagana jest biblioteka innej firmy.
Zainstaluj oficjalną wtyczkę google_sign_in
.
Po zainstalowaniu uruchom proces logowania i utwórz nowe dane uwierzytelniające:
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);
}
Sieć
W Internecie pakiet Firebase SDK zapewnia obsługę automatycznej obsługi przepływu uwierzytelniania przy użyciu projektu Firebase. Na przykład:
Utwórz dostawcę uwierzytelniania Google, podając dodatkowy zakres uprawnień, jaki chcesz uzyskać od użytkownika:
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': '[email protected]'
});
Podaj poświadczenia signInWithPopup
. Spowoduje to wyświetlenie nowego okna z prośbą o zalogowanie się do projektu. Alternatywnie możesz użyć signInWithRedirect
, aby utrzymać proces uwierzytelniania w tym samym oknie.
Future<UserCredential> signInWithGoogle() async {
// Create a new provider
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': '[email protected]'
});
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(googleProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(googleProvider);
}
Gry Google Play
Możesz uwierzytelniać użytkowników w swojej grze na Androida, korzystając z logowania w Grach Play.
Android
Postępuj zgodnie z instrukcjami konfiguracji Google na Androidzie, a następnie skonfiguruj usługi Gier Play przy użyciu informacji o aplikacji Firebase .
Poniższe czynności uruchomią proces logowania, utworzą nowe dane uwierzytelniające i zalogują użytkownika:
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);
}
Zanim zaczniesz, skonfiguruj aplikację Facebook Developer i postępuj zgodnie z procesem konfiguracji, aby włączyć logowanie przez Facebook.
Upewnij się, że dostawca logowania „Facebook” jest włączony w konsoli Firebase . z ustawionym identyfikatorem aplikacji Facebook i sekretem.
iOS+ i Androida
Na platformach natywnych do zainstalowania pakietu SDK Facebooka i uruchomienia procesu uwierzytelniania wymagana jest biblioteka innej firmy.
Zainstaluj wtyczkę flutter_facebook_auth
.
Będziesz musiał wykonać kroki opisane w dokumentacji wtyczki, aby upewnić się, że zestawy SDK Facebooka dla Androida i iOS zostały poprawnie zainicjowane. Po zakończeniu uruchom proces logowania, utwórz dane uwierzytelniające Facebooka i zaloguj użytkownika:
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);
}
Sieć
W Internecie pakiet Firebase SDK zapewnia obsługę automatycznej obsługi przepływu uwierzytelniania przy użyciu szczegółów aplikacji Facebook dostępnych w konsoli Firebase. Na przykład:
Utwórz dostawcę Facebooka, podając dodatkowy zakres uprawnień, jaki chcesz uzyskać od użytkownika.
Upewnij się, że identyfikator URI przekierowania OAuth z konsoli Firebase został dodany jako prawidłowy identyfikator URI przekierowania OAuth w aplikacji Facebook.
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
Podaj poświadczenia signInWithPopup
. Spowoduje to wyświetlenie nowego okna z prośbą o zalogowanie się do aplikacji 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);
}
Jabłko
iOS+
Zanim zaczniesz, skonfiguruj opcję Zaloguj się przy użyciu konta Apple i włącz firmę Apple jako dostawcę logowania .
Następnie upewnij się, że Twoje aplikacje Runner
mają opcję „Zaloguj się za pomocą Apple”.
Android
Zanim zaczniesz, skonfiguruj opcję Zaloguj się przy użyciu konta Apple i włącz firmę Apple jako dostawcę logowania .
Sieć
Zanim zaczniesz, skonfiguruj opcję Zaloguj się przy użyciu konta Apple i włącz firmę Apple jako dostawcę logowania .
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);
}
}
Unieważnij tokeny autoryzacji Apple
Logowanie do Apple na platformach Apple zwraca kod autoryzacyjny, którego można użyć do unieważnienia tokenu uwierzytelniania Apple przy użyciu interfejsu API revokeTokenWithAuthorizationCode()
.
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithApple() async {
final appleProvider = AppleAuthProvider();
UserCredential userCredential = await FirebaseAuth.instance.signInWithPopup(appleProvider);
// Keep the authorization code returned from Apple platforms
String? authCode = userCredential.additionalUserInfo?.authorizationCode;
// Revoke Apple auth token
await FirebaseAuth.instance.revokeTokenWithAuthorizationCode(authCode!);
}
Microsoftu
iOS+
Zanim zaczniesz , skonfiguruj logowanie Microsoft dla iOS i dodaj niestandardowe schematy adresów URL do swojego Runnera (krok 1) .
Android
Zanim zaczniesz , skonfiguruj logowanie Microsoft dla Androida .
Nie zapomnij dodać odcisku palca SHA-1 swojej aplikacji.
Sieć
Zanim zaczniesz , skonfiguruj usługę Microsoft Login for Web .
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);
}
}
Świergot
Upewnij się, że dostawca logowania „Twitter” jest włączony w konsoli Firebase z ustawionym kluczem API i tajnym kluczem API. Upewnij się, że identyfikator URI przekierowania Firebase OAuth (np. my-app-12345.firebaseapp.com/__/auth/handler) jest ustawiony jako adres URL wywołania zwrotnego autoryzacji na stronie ustawień aplikacji w konfiguracji aplikacji na Twitterze .
W zależności od aplikacji może być konieczne zażądanie podwyższonego dostępu do interfejsu API .
iOS+
Musisz skonfigurować niestandardowy schemat adresu URL zgodnie z opisem w kroku 1 przewodnika iOS .
Android
Jeśli nie określiłeś jeszcze odcisku palca SHA-1 swojej aplikacji, zrób to na stronie Ustawienia w konsoli Firebase. Szczegółowe informacje na temat uzyskiwania odcisku palca SHA-1 aplikacji można znaleźć w artykule Uwierzytelnianie klienta .
Sieć
Działa od razu po wyjęciu z pudełka.
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);
}
}
GitHub
Upewnij się, że skonfigurowałeś aplikację OAuth w ustawieniach programisty GitHub i że dostawca logowania „GitHub” jest włączony w konsoli Firebase z ustawionym identyfikatorem klienta i kluczem tajnym oraz adresem URL wywołania zwrotnego ustawionym w aplikacji GitHub.
iOS+ i Androida
W przypadku platform natywnych musisz dodać pliki google-services.json
i GoogleService-Info.plist
.
W przypadku systemu iOS dodaj niestandardowy schemat adresu URL zgodnie z opisem w kroku 1 przewodnika systemu iOS .
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}
Sieć
W Internecie zestaw GitHub SDK zapewnia obsługę automatycznej obsługi przepływu uwierzytelniania przy użyciu szczegółów aplikacji GitHub dostępnych w konsoli Firebase. Upewnij się, że adres URL wywołania zwrotnego w konsoli Firebase został dodany jako adres URL wywołania zwrotnego w aplikacji GitHub w konsoli programisty.
Na przykład:
Utwórz dostawcę GitHub i podaj poświadczenia signInWithPopup
. Spowoduje to wyświetlenie nowego okna z prośbą o zalogowanie się do aplikacji 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);
}
Wieśniak
Upewnij się, że dostawca logowania „Yahoo” jest włączony w konsoli Firebase z ustawionym kluczem API i tajnym kluczem API. Upewnij się także, że identyfikator URI przekierowania Firebase OAuth (np. my-app-12345.firebaseapp.com/__/auth/handler) jest ustawiony jako identyfikator URI przekierowania w konfiguracji sieci Yahoo Developer Network Twojej aplikacji.
iOS+
Zanim zaczniesz, skonfiguruj logowanie Yahoo dla iOS i dodaj niestandardowe schematy adresów URL do swojego Runnera (krok 1) .
Android
Zanim zaczniesz, skonfiguruj logowanie Yahoo dla Androida .
Nie zapomnij dodać odcisku palca SHA-1 swojej aplikacji.
Sieć
Działa od razu po wyjęciu z pudełka.
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);
}
}
Korzystanie z tokena dostępu OAuth
Korzystając z AuthProvider, możesz pobrać token dostępu powiązany z dostawcą, wykonując następujące żądanie.
final appleProvider = AppleAuthProvider();
final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;
// You can send requests with the `accessToken`
Łączenie dostawcy uwierzytelniania
Jeśli chcesz powiązać dostawcę z bieżącym użytkownikiem, możesz użyć następującej metody: ```dart Wait FirebaseAuth.instance.signInAnonymously();
końcowy appleProvider = AppleAuthProvider();
if (kIsWeb) { czekaj FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// Możesz także użyć linkWithRedirect
} else { czekaj FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }
// Twój anonimowy użytkownik został teraz uaktualniony, aby móc łączyć się za pomocą funkcji Zaloguj się za pomocą Apple ```
Uwierzytelnij się ponownie u dostawcy
Tego samego wzorca można użyć z reauthenticateWithProvider
, którego można użyć do pobrania nowych poświadczeń dla wrażliwych operacji wymagających niedawnego logowania.
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