Sosyal kimlik doğrulama, kullanıcının bir hesapta veya bağlantıda oturum açmasına olanak tanıyan çok adımlı bir kimlik doğrulama akışıdır başka bir profille paylaşabilirsiniz.
Hem yerel platformlar hem de web desteği, signInWithCredential
hizmetine iletilebilecek kimlik bilgisi oluşturmayı destekler
veya linkWithCredential
yöntem. Alternatif olarak, web platformlarında kimlik doğrulama işlemini şuradan da tetikleyebilirsiniz:
pop-up veya yönlendirme yapıyor.
Çoğu yapılandırma, Firebase ile Google Oturum Açma özelliği kullanılırken zaten kurulur ancak makinenizin SHA1 anahtarı, Android ile kullanılmak üzere yapılandırıldı. Anahtarın nasıl oluşturulacağını şurada görebilirsiniz: kimlik doğrulama belgelerine bakın.
"Google"ın, Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması gerekir.
Kullanıcınız manuel olarak bir hesap kaydettikten sonra Google ile oturum açarsa kimlik doğrulama sağlayıcısı otomatik olarak Bu değişiklik, güvenilir sağlayıcılara ait Firebase Authentications kavramından kaynaklanıyor. Web sitemiz g.co/newsinitiative/labs üzerinden bu sayfaya göz atın.
iOS+ ve Android
Yerel platformlarda kimlik doğrulama akışını başlatmak için 3. taraf kitaplığı gerekir.
Resmi google_sign_in
eklentisini yükleyin.
Yüklendikten sonra oturum açma akışını tetikleyin ve yeni bir kimlik bilgisi oluşturun:
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);
}
Web
Firebase SDK'sı, web'de Firebase projeniz kullanılarak kimlik doğrulama akışının otomatik olarak yönetilmesi için destek sağlar. Örneğin:
Ek izin kapsamı sağlayarak bir Google kimlik doğrulama sağlayıcı oluşturma başka hangi bilgileri vermeniz gerekir?
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
signInWithPopup
yöntemine kimlik bilgisini sağlayın. Bu işlem, yeni bir
kullanıcının projenizde oturum açmasını isteyen bir pencere görürsünüz. Alternatif olarak signInWithRedirect
öğesini kullanarak
kimlik doğrulama işlemini tekrarlamanız gerekir.
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);
}
Google Play Games (yalnızca Android)
"Play Games"in Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması gerekir. Play Games Firebase proje kurulumu için bu talimatları uygulayın.
Play Games hizmetlerini yapılandırma talimatlarını uygulayın Firebase uygulamanızla.
Android
Future<void> _signInWithPlayGames() async {
// Get server auth code from 3rd party provider
// See PR description for details on how you might get the server auth code:
// https://github.com/firebase/flutterfire/pull/12201#issue-2100392487
final serverAuthCode = '...';
final playGamesCredential = PlayGamesAuthProvider.credential(
serverAuthCode: serverAuthCode);
await FirebaseAuth.instance
.signInWithCredential(playGamesCredential);
}
Başlamadan önce Facebook Geliştirici Uygulamanızı kurun ve Facebook Girişi'ni etkinleştirmek için kurulum işlemini uygulayın.
"Facebook" olduğundan emin olun Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması gerekir. değerine ayarlayın.
iOS+ ve Android
Yerel platformlarda hem Facebook SDK'sını yüklemek hem de kimlik doğrulama akışını tetiklemek için 3. taraf kitaplığı gerekir.
flutter_facebook_auth
eklentisini yükleyin.
Eklenti belgelerindeki adımları uygulayarak hem Android hem de iOS Facebook SDK'ları başlatıldı sağlayabilir. İşlem tamamlandığında, oturum açma akışını başlatın, Facebook kimlik bilgisi oluşturun ve kullanıcının oturum açmasını sağlayın:
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);
}
Web
Firebase SDK'sı, web'de kimlik doğrulama akışını otomatik olarak yönetmek için Firebase konsolunda sağlanan Facebook uygulaması ayrıntıları. Örneğin:
Ek izin kapsamı sağlayarak bir Facebook sağlayıcı oluşturma başka bir belge de kullanabilirsiniz.
Firebase konsolundaki OAuth yönlendirme URI'sinin geçerli bir OAuth Yönlendirme URI'si olarak eklendiğinden emin olun. inceleyebilirsiniz.
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
signInWithPopup
yöntemine kimlik bilgisini sağlayın. Bu işlem, yeni bir
kullanıcının Facebook uygulamanızda oturum açmasını isteyen bir pencere görünür:
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);
}
Apple
iOS ve üzeri
Başlamadan önce Apple ile Oturum Açma özelliğini yapılandırın ve Apple'ı oturum açma sağlayıcısı olarak etkinleştirebilir.
Ardından, Runner
uygulamalarınızda "Apple ile oturum aç" seçeneğinin bulunduğundan emin olun olanağı sunar.
Android
Başlamadan önce Apple ile Oturum Açma özelliğini yapılandırın ve Apple'ı oturum açma sağlayıcısı olarak etkinleştirebilir.
Web
Başlamadan önce Apple ile Oturum Açma özelliğini yapılandırın ve Apple'ı oturum açma sağlayıcısı olarak etkinleştirebilir.
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);
}
}
Yalnızca Apple platformunda oturum açma
iOS+ platformlarında Apple ile oturum açmak için aşağıdaki yöntemle de erişilebilir:
// Implement a function that generates a nonce. See iOS documentation for how to create a nonce:
// https://firebase.google.com/docs/auth/ios/apple#sign_in_with_apple_and_authenticate_with_firebase
String rawNonce = createNonce();
// Create a SHA-256 hash of the nonce. Consider using the `crypto` package from the pub.dev registry.
String hashSHA256String = createHashSHA256String(rawNonce);
// Use the hash of the nonce to get the idToken. Consider using the `sign_in_with_apple` plugin from the pub.dev registry.
String idToken = await getIdToken();
final fullName = AppleFullPersonName(
familyName: 'Name',
givenName: 'Your',
);
// Use the `rawNonce` and `idToken` to get the credential
final credential = AppleAuthProvider.credentialWithIDToken(
idToken,
rawNonce,
fullName,
);
await FirebaseAuth.instance.signInWithCredential(credential);
Apple kimlik doğrulama jetonlarını iptal et
Apple platformlarında Apple ile oturum açmak, kullanılabilecek bir yetkilendirme kodu döndürür
revokeTokenWithAuthorizationCode()
kullanarak Apple kimlik doğrulama jetonunu iptal edin
API'ye gidin.
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!);
}
Apple Game Center (yalnızca Apple)
"Oyun Merkezi"nin doğru olduğundan emin olun. Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması gerekir. Oyun Merkezi Firebase proje kurulumu için bu talimatları uygulayın.
Firebase Game Center kimlik bilgisi verilebilmesi ve Firebase üzerinden giriş yapılabilmesi için Game Center'a giriş yapmanız gerekir. İlgili bazı talimatları aşağıda bulabilirsiniz konusunda daha fazla bilgi edineceksiniz.
iOS ve üzeri
Future<void> _signInWithGameCenter() async {
final credential = GameCenterAuthProvider.credential();
await FirebaseAuth.instance
.signInWithCredential(credential);
}
Microsoft
iOS ve üzeri
Başlamadan önce iOS için Microsoft Giriş'i yapılandırın ve özel URL şemalarını ekleyin adresine e-posta gönderin (1. adım).
Android
Başlamadan önce Android için Microsoft Giriş'i yapılandırın.
Uygulamanızın SHA-1 parmak izini eklemeyi unutmayın.
Web
Başlamadan önce Web için Microsoft Giriş'i yapılandırın.
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);
}
}
"Twitter"ın açık olduğundan emin olun Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması ile değiştirin. Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler) olduğundan emin olun Twitter uygulamanızın yapılandırmasında uygulamanızın ayarlar sayfasında Yetkilendirme geri çağırma URL'niz olarak ayarlanır.
Ayrıca, uygulamanıza bağlı olarak üst düzey API erişimi istemeniz de gerekebilir.
iOS ve üzeri
Özel URL şemanızı iOS kılavuzunun 1. adımında açıklandığı şekilde yapılandırmanız gerekir.
Android
Uygulamanızın SHA-1 parmak izini henüz belirtmediyseniz bunu Ayarlar sayfasından yapın bölümüne gidin. Uygulamanızın SHA-1 parmak izini nasıl alacağınızla ilgili ayrıntılar için İstemcinizin Kimliğini Doğrulama başlıklı makaleyi inceleyin.
Web
Kullanıma hazır.
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
GitHub Geliştirici Ayarları'nda bir OAuth uygulaması kurduğunuzdan emin olun ve "GitHub"ın Oturum açma sağlayıcısı, Firebase Konsolu'nda etkinleştirilmiş GitHub uygulamasında geri çağırma URL'si ayarlanarak, İstemci Kimliği ve Gizli Anahtar ayarlandığından emin olun.
iOS+ ve Android
Yerel platformlar için google-services.json
ve GoogleService-Info.plist
eklemeniz gerekir.
iOS için iOS kılavuzunun 1. adımında açıklandığı şekilde özel URL şemasını ekleyin.
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}
Web
GitHub SDK'sı, web'de kimlik doğrulama akışını otomatik olarak yönetmek için Firebase konsolunda sağlanan GitHub uygulaması ayrıntıları. Firebase konsoluna geri çağırma URL'sinin eklendiğinden emin olun olarak, geliştirici konsolundaki GitHub uygulamanızda bir geri çağırma URL'si olarak kullanabilirsiniz.
Örneğin:
Bir GitHub sağlayıcısı oluşturun ve signInWithPopup
yöntemine kimlik bilgisini sağlayın. Bu işlem, yeni bir
kullanıcının GitHub uygulamanızda oturum açmasını isteyen bir pencere açılır:
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);
}
Yahoo
"Yahoo" Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması ile değiştirin. Ayrıca Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler) olduğundan emin olun uygulamanızın Yahoo Geliştirici Ağı yapılandırmasında yönlendirme URI'si olarak ayarlanır.
iOS ve üzeri
Başlamadan önce, iOS için Yahoo Girişi'ni yapılandırın ve özel URL şemalarını ekleyin adresine e-posta gönderin (1. adım).
Android
Başlamadan önce Android için Yahoo Login'i yapılandırın.
Uygulamanızın SHA-1 parmak izini eklemeyi unutmayın.
Web
Kullanıma hazır.
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);
}
}
OAuth erişim jetonunu kullanma
AuthProvider kullanarak sağlayıcıyla ilişkilendirilmiş erişim jetonunu alabilirsiniz. .
final appleProvider = AppleAuthProvider();
final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;
// You can send requests with the `accessToken`
Kimlik Doğrulama Sağlayıcısı Bağlama
Bir sağlayıcıyı geçerli bir kullanıcıya bağlamak istiyorsanız aşağıdaki yöntemi kullanabilirsiniz: ```dart await FirebaseAuth.instance.signInAnonymously();
final appleProvider = AppleAuthProvider();
if (kIsWeb) { await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// Ayrıca, linkWithRedirect
öğesini de kullanabilirsiniz
} else {
await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider);
}
// Anonim kullanıcınız artık Apple ile Oturum Açma ile bağlantı kurabilecek şekilde yükseltildi ```
Sağlayıcı ile yeniden kimlik doğrula
Aynı kalıp, yeni verileri almak için kullanılabilen reauthenticateWithProvider
ile kullanılabilir.
yakın zamanda giriş yapılmasını gerektiren hassas işlemler için kimlik bilgileri.
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