Sosyal kimlik doğrulama, kullanıcının bir hesapta oturum açmasına veya mevcut bir hesaba bağlamasına olanak tanıyan çok adımlı bir kimlik doğrulama akışıdır.
Hem yerel platformlar hem de web, daha sonra signInWithCredential
veya linkWithCredential
yöntemlerine iletilebilecek bir kimlik bilgisi oluşturmayı destekler. Alternatif olarak, web platformlarında kimlik doğrulama işlemini bir pop-up veya yönlendirme aracılığıyla da tetikleyebilirsiniz.
Firebase ile Google Oturum Açma özelliği kullanılırken çoğu yapılandırma zaten kurulur. Ancak makinenizin SHA1 anahtarının Android ile kullanılacak şekilde yapılandırıldığından emin olmanız gerekir. Anahtarın nasıl oluşturulacağını kimlik doğrulama belgelerinde bulabilirsiniz.
Firebase Konsolu'nda "Google" oturum açma sağlayıcının etkinleştirildiğinden emin olun.
Kullanıcınız manuel olarak bir hesabı kaydettikten sonra Google ile oturum açarsa Firebase Authentications güvenilir sağlayıcılar kavramı nedeniyle, kullanıcının kimlik doğrulama sağlayıcısı otomatik olarak Google ile değiştirilir. Bu konu hakkında daha fazla bilgiye buradan ulaşabilirsiniz.
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. Örnek:
Kullanıcıdan almak istediğiniz ek izin kapsamını sağlayarak bir Google kimlik doğrulama sağlayıcısı oluşturun:
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, kullanıcıdan projenizde oturum açmasının istendiği yeni bir pencereyi tetikler. Alternatif olarak, kimlik doğrulama işlemini aynı pencerede tutmak için signInWithRedirect
kullanabilirsiniz.
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
Play Games'te Oturum Açma özelliğini kullanarak Android oyununuzdaki kullanıcıların kimliğini doğrulayabilirsiniz.
Android
Android'de Google kurulumu talimatlarını uygulayın, ardından Play Games hizmetlerini Firebase uygulama bilgilerinizle yapılandırın.
Aşağıdakiler oturum açma akışını tetikler, yeni bir kimlik bilgisi oluşturur ve kullanıcıda oturum açar:
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);
}
Başlamadan önce Facebook Geliştirici Uygulamanızı kurun ve Facebook Girişi'ni etkinleştirmek için kurulum işlemini uygulayın.
Firebase Console'da "Facebook" oturum açma sağlayıcısının etkinleştirildiğinden emin olun. Facebook Uygulama Kimliği ve Gizli Anahtar ayarıyla.
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.
Hem Android hem de iOS Facebook SDK'sının doğru şekilde başlatıldığından emin olmak için eklenti dokümanlarındaki adımları uygulamanız gerekir. İş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 Firebase konsolunda sağlanan Facebook uygulama ayrıntılarını kullanarak kimlik doğrulama akışını otomatik olarak yönetme desteği sunar. Örnek:
Kullanıcıdan almak istediğiniz ek izin kapsamını sağlayarak bir Facebook sağlayıcı oluşturun.
Firebase konsolundaki OAuth yönlendirme URI'sinin Facebook uygulamanıza geçerli bir OAuth Yönlendirme URI'si olarak eklendiğinden emin olun.
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
signInWithPopup
yöntemine kimlik bilgisini sağlayın. Bu işlem, kullanıcıdan Facebook uygulamanızda oturum açmasını isteyen yeni bir pencereyi tetikler:
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'yı yapılandırın ve Apple'ı oturum açma sağlayıcısı olarak etkinleştirin.
Ardından, Runner
uygulamalarınızda "Apple ile oturum aç" özelliğinin olduğundan emin olun.
Android
Başlamadan önce Apple ile Oturum Açma'yı yapılandırın ve Apple'ı oturum açma sağlayıcısı olarak etkinleştirin.
Web
Başlamadan önce Apple ile Oturum Açma'yı yapılandırın ve Apple'ı oturum açma sağlayıcısı olarak etkinleştirin.
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);
}
}
Apple kimlik doğrulama jetonlarını iptal et
Apple platformlarında Apple ile oturum açma özelliği, revokeTokenWithAuthorizationCode()
API'yi kullanarak Apple kimlik doğrulama jetonunu iptal etmek için kullanılabilen bir yetkilendirme kodu döndürür.
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!);
}
Microsoft
iOS ve üzeri
Başlamadan önce iOS için Microsoft Giriş'i yapılandırın ve Çalıştırıcınıza özel URL şemaları ekleyin (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);
}
}
Firebase Konsolu'nda "Twitter" oturum açma sağlayıcısının bir API Anahtarı ve API Gizli Anahtarı seti ile etkinleştirildiğinden emin olun. Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler), Twitter uygulamanızın yapılandırmasında, uygulamanızın ayarlar sayfasında Yetkilendirme geri çağırma URL'niz olarak ayarlandığından emin olun.
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 Firebase konsolunun Ayarlar sayfasından bunu yapın. 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ı'nızdan bir OAuth uygulaması oluşturduğunuzdan ve Firebase Console'da "GitHub" oturum açma sağlayıcısının, GitHub uygulamasında istemci kimliği ve gizli anahtarın ayarlanmış olarak etkinleştirildiğinden 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 Firebase konsolunda sağlanan GitHub uygulama ayrıntılarını kullanarak kimlik doğrulama akışının otomatik olarak işlenmesi için destek sağlar. Firebase konsolundaki geri çağırma URL'sinin, geliştirici konsolundaki GitHub uygulamanıza geri çağırma URL'si olarak eklendiğinden emin olun.
Örnek:
Bir GitHub sağlayıcısı oluşturun ve signInWithPopup
yöntemine kimlik bilgisini sağlayın. Bu işlem, kullanıcıdan GitHub uygulamanızda oturum açmasını isteyen yeni bir pencereyi tetikler:
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
Firebase Konsolu'nda "Yahoo" oturum açma sağlayıcısının bir API Anahtarı ve API Gizli Anahtarı grubuyla etkinleştirildiğinden emin olun. Ayrıca Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler), uygulamanızın Yahoo Developer Network yapılandırmasında yönlendirme URI'si olarak ayarlandığından emin olun.
iOS ve üzeri
Başlamadan önce, iOS için Yahoo Girişi'ni yapılandırın ve Çalıştırıcınıza özel URL şemalarını ekleyin (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 aşağıdaki istekte bulunarak sağlayıcıyla ilişkili 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ı mevcut bir kullanıcıya bağlamak istiyorsanız şu yöntemi kullanabilirsiniz: ```dart await FirebaseAuth.instance.signInAnonymously();
final appleProvider = AppleAuthProvider();
if (kIsWeb) { await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// linkWithRedirect
} else {
await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider);
} kullanabilirsiniz
// Anonim kullanıcınız Apple ile Oturum Açma özelliğiyle bağlantı kurabilecek şekilde yükseltildi ```
Sağlayıcı ile yeniden kimlik doğrula
Aynı kalıp, yakın zamanda giriş yapılmasını gerektiren hassas işlemler için yeni kimlik bilgileri almak amacıyla reauthenticateWithProvider
ile kullanılabilir.
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