Sosyal kimlik doğrulama, bir kullanıcıyı bir hesapta oturum açmanıza veya mevcut bir hesaba bağlamanıza 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 aktarılabilecek bir kimlik bilgisi oluşturmayı destekler. Alternatif olarak web platformlarında kimlik doğrulama sürecini bir açılır pencere veya yönlendirme yoluyla tetikleyebilirsiniz.
Firebase ile Google Oturum Açma kullanılırken çoğu yapılandırma zaten ayarlanmıştır, ancak makinenizin SHA1 anahtarının Android ile kullanılmak üzere yapılandırıldığından emin olmanız gerekir. Anahtarın nasıl oluşturulacağını kimlik doğrulama belgelerinde görebilirsiniz.
Firebase Konsolunda "Google" oturum açma sağlayıcısının etkinleştirildiğinden emin olun.
Kullanıcınız Google'da oturum açarsa, bir hesabı manuel olarak kaydettikten sonra, Firebase Authentications'ın güvenilir sağlayıcılar konsepti nedeniyle kimlik doğrulama sağlayıcısı otomatik olarak Google olarak değişecektir. Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz.
iOS+ ve Android
Yerel platformlarda kimlik doğrulama akışını tetiklemek için 3. taraf bir kitaplık gerekir.
Resmi google_sign_in
eklentisini yükleyin.
Kurulduktan 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);
}
ağ
Web'de Firebase SDK, Firebase projenizi kullanarak kimlik doğrulama akışının otomatik olarak yönetilmesine yönelik destek sağlar. Örneğin:
Kullanıcıdan almak istediğiniz ek izin kapsamını sağlayan 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 bilgilerini sağlayın. Bu, kullanıcının projenizde oturum açmasını isteyen yeni bir pencerenin görüntülenmesini tetikleyecektir. 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 Oyunlar
Play Oyunlar Oturum Açma'yı kullanarak Android oyununuzdaki kullanıcıların kimliğini doğrulayabilirsiniz.
Android
Android'de Google kurulumuna ilişkin talimatları izleyin, ardından Play Oyunlar hizmetlerini Firebase uygulama bilgilerinizle yapılandırın.
Aşağıdakiler oturum açma akışını tetikleyecek, yeni bir kimlik bilgisi oluşturacak ve kullanıcıda oturum açacaktır:
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şini etkinleştirmek için kurulum sürecini izleyin.
Firebase Konsolunda "Facebook" oturum açma sağlayıcısının etkinleştirildiğinden emin olun. Facebook Uygulama Kimliği ve Sır seti ile.
iOS+ ve Android
Yerel platformlarda, hem Facebook SDK'yı yüklemek hem de kimlik doğrulama akışını tetiklemek için 3. taraf bir kitaplık gerekir.
flutter_facebook_auth
eklentisini yükleyin.
Hem Android hem de iOS Facebook SDK'larının doğru şekilde başlatıldığından emin olmak için eklenti belgelerindeki adımları izlemeniz gerekecektir. Tamamlandığında oturum açma akışını tetikleyin, bir 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);
}
ağ
Web'de Firebase SDK, Firebase konsolunda sağlanan Facebook uygulama ayrıntılarını kullanarak kimlik doğrulama akışının otomatik olarak yönetilmesine yönelik destek sağlar. Örneğin:
Kullanıcıdan almak istediğiniz ek izin kapsamını sağlayan bir Facebook sağlayıcısı 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 bilgilerini sağlayın. Bu, kullanıcının Facebook uygulamanızda oturum açmasını isteyen yeni bir pencerenin görüntülenmesini tetikleyecektir:
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);
}
Elma
iOS+
Başlamadan önce Apple ile Giriş Yap'ı yapılandırın ve Apple'ı oturum açma sağlayıcısı olarak etkinleştirin .
Ardından Runner
uygulamalarınızın "Apple ile Giriş Yap" özelliğine sahip olduğundan emin olun.
Android
Başlamadan önce Apple ile Giriş Yap'ı yapılandırın ve Apple'ı oturum açma sağlayıcısı olarak etkinleştirin .
ağ
Başlamadan önce Apple ile Giriş Yap'ı 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 belirteçlerini iptal edin
Apple platformlarında Apple ile oturum açma, revokeTokenWithAuthorizationCode()
API'sini kullanarak Apple kimlik doğrulama belirtecini iptal etmek için kullanılabilecek 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+
Başlamadan önce iOS için Microsoft Oturum Açma'yı yapılandırın ve özel URL şemalarını Runner'ınıza ekleyin (1. adım) .
Android
Android için Microsoft Oturum Açma'yı yapılandırmaya başlamadan önce.
Uygulamanızın SHA-1 parmak izini eklemeyi unutmayın.
ağ
Web için Microsoft Oturum Açma'yı yapılandırmaya başlamadan önce.
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);
}
}
heyecan
Firebase Konsolunda "Twitter" oturum açma sağlayıcısının bir API Anahtarı ve API Sırrı 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ındaki uygulamanızın ayarlar sayfasında Yetkilendirme geri çağırma URL'niz olarak ayarlandığından emin olun.
Ayrıca uygulamanıza bağlı olarak yükseltilmiş API erişimi talep etmeniz de gerekebilir.
iOS+
Ö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 Firebase konsolunun Ayarlar sayfasından yapın. Uygulamanızın SHA-1 parmak izini nasıl alacağınızla ilgili ayrıntılar için İstemcinizin Kimlik Doğrulaması bölümüne bakın.
ağ
Kutunun dışında çalışı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ı kurduğunuzdan ve Firebase Konsolunda "GitHub" oturum açma sağlayıcısının etkinleştirildiğinden, İstemci Kimliği ve Sırrı ayarlandığından ve GitHub uygulamasında geri arama URL'si 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);
}
ağ
Web'de GitHub SDK, Firebase konsolunda sağlanan GitHub uygulama ayrıntılarını kullanarak kimlik doğrulama akışının otomatik olarak işlenmesine yönelik destek sağlar. Firebase konsolundaki geri arama URL'sinin, geliştirici konsolundaki GitHub uygulamanıza geri arama URL'si olarak eklendiğinden emin olun.
Örneğin:
GitHub sağlayıcısı oluşturun ve kimlik bilgilerini signInWithPopup
yöntemine sağlayın. Bu, kullanıcının GitHub uygulamanızda oturum açmasını isteyen yeni bir pencerenin görüntülenmesini tetikleyecektir:
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 Konsolunda "Yahoo" oturum açma sağlayıcısının bir API Anahtarı ve API Sırrı kümesiyle etkinleştirildiğinden emin olun. Ayrıca Firebase OAuth yönlendirme URI'nizin (örn. my-app-12345.firebaseapp.com/__/auth/handler) uygulamanızın Yahoo Geliştirici Ağı yapılandırmasında yönlendirme URI'si olarak ayarlandığından emin olun.
iOS+
Başlamadan önce, iOS için Yahoo Login'i yapılandırın ve özel URL şemalarını Runner'ınıza ekleyin (1. adım) .
Android
Başlamadan önce Android için Yahoo Girişini yapılandırın .
Uygulamanızın SHA-1 parmak izini eklemeyi unutmayın.
ağ
Kutunun dışında çalışı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 belirtecini 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ını Bağlama
Bir sağlayıcıyı geçerli bir kullanıcıya bağlamak istiyorsanız aşağıdaki yöntemi kullanabilirsiniz: ```dart wait FirebaseAuth.instance.signInAnonymously();
final appleProvider = AppleAuthProvider();
if (kIsWeb) { FirebaseAuth.instance.currentUser'ı bekliyor?.linkWithPopup(appleProvider);
// linkWithRedirect
de kullanabilirsiniz } else { wait FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }
// Anonim kullanıcınız artık Apple ile Giriş Yap ``` ile bağlantı kurabilecek şekilde yükseltildi
Sağlayıcıyla yeniden kimlik doğrulaması yapın
Aynı model, yakın zamanda oturum açmayı gerektiren hassas işlemler için yeni kimlik bilgileri almak amacıyla kullanılabilecek reauthenticateWithProvider
ile birlikte 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