Sosyal kimlik doğrulama, bir kullanıcıyı bir hesapta oturum açmanıza veya mevcut bir hesapla ilişkilendirmenize 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 geçirilebilecek bir kimlik bilgisi oluşturmayı destekler. Alternatif olarak, web platformlarında, bir açılır pencere veya yönlendirme yoluyla kimlik doğrulama sürecini tetikleyebilirsiniz.
Çoğu yapılandırma, Firebase ile Google Sign-In kullanırken zaten kuruludur, ancak makinenizin SHA1 anahtarının Android ile kullanım için yapılandırıldığından emin olmanız gerekir. Anahtarın nasıl oluşturulacağını 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 bir hesabı manuel olarak kaydettirdikten sonra Google'da oturum açarsa, Firebase Authentications'ın güvenilir sağlayıcılar konsepti nedeniyle kimlik doğrulama sağlayıcısı otomatik olarak Google'a geçer. Bu konuda daha fazla bilgiyi burada bulabilirsiniz .
iOS+ ve Android
Yerel platformlarda, kimlik doğrulama akışını tetiklemek için bir 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);
}
ağ
Web'de, Firebase SDK, Firebase projenizi kullanarak kimlik doğrulama akışının otomatik olarak işlenmesi için destek sağlar. Örneğin:
Kullanıcıdan almak istediğiniz herhangi bir ek izin kapsamı sağlayarak bir Google yetkilendirme 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önteminin kimlik bilgilerini sağlayın. Bu, kullanıcının projenizde oturum açmasını isteyen yeni bir pencereyi tetikleyecektir. Alternatif olarak, kimlik doğrulama sürecini 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 Oyunlar Oyna
Play Oyunlar Oturum Açma özelliğini kullanarak Android oyununuzdaki kullanıcıların kimliklerini doğrulayabilirsiniz.
Android
Android'de Google kurulumuna ilişkin talimatları uygulayın, 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 takip edin.
Firebase Konsolunda "Facebook" oturum açma sağlayıcısının etkinleştirildiğinden emin olun. Facebook Uygulama Kimliği ve Gizli seti ile.
iOS+ ve Android
Yerel platformlarda, hem Facebook SDK'yı yüklemek hem de kimlik doğrulama akışını tetiklemek için bir 3. taraf kitaplığı gerekir.
flutter_facebook_auth
eklentisini kurun.
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 oturumunu açı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ı otomatik olarak işlemek için 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 konsolundan OAuth yönlendirme URI'sinin Facebook Uygulamanızda 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önteminin kimlik bilgilerini sağlayın. Bu, kullanıcının Facebook uygulamanızda oturum açmasını isteyen yeni bir pencereyi 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 Oturum Aç'ı yapılandırın ve oturum açma sağlayıcısı olarak Apple'ı 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 Oturum Aç'ı yapılandırın ve oturum açma sağlayıcısı olarak Apple'ı etkinleştirin .
ağ
Başlamadan önce, Apple ile Oturum Aç'ı yapılandırın ve oturum açma sağlayıcısı olarak Apple'ı 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);
}
}
Microsoft
iOS+
iOS için Microsoft Login'i yapılandırmaya başlamadan önce ve Runner'ınıza özel URL şemaları ekleyin (1. adım) .
Android
Başlamadan önce Android için Microsoft Login'i yapılandırın .
Uygulamanızın SHA-1 parmak izini eklemeyi unutmayın.
ağ
Başlamadan önce Web için Microsoft Login'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);
}
}
heyecan
Bir API Anahtarı ve API Gizli Anahtarı seti ile Firebase Konsolunda "Twitter" oturum açma sağlayıcısının 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ırma sayfasında uygulamanızın ayarlar sayfasında Yetkilendirme geri arama URL'niz olarak ayarlandığından emin olun.
Ayrıca uygulamanıza bağlı olarak yükseltilmiş API erişimi istemeniz gerekebilir.
iOS+
iOS kılavuzu adım 1'de açıklandığı gibi özel URL şemanızı yapılandırmanız gerekir.
Android
Uygulamanızın SHA-1 parmak izini henüz belirlemediyseniz, 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 Kimliğini Doğrulama 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, İstemci Kimliği ve Sır ayarlı, GitHub uygulamasında geri arama URL'si 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ığı gibi ö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ı otomatik olarak işlemek için destek sağlar. Firebase konsolundaki geri arama URL'sinin, geliştirici konsolundaki GitHub uygulamanıza bir geri arama URL'si olarak eklendiğinden emin olun.
Örneğin:
Bir GitHub sağlayıcısı oluşturun ve signInWithPopup
yönteminin kimlik bilgilerini sağlayın. Bu, kullanıcının 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
Bir API Anahtarı ve API Gizli Anahtarı seti ile Firebase Konsolunda "Yahoo" oturum açma sağlayıcısının 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 bir yönlendirme URI'si olarak ayarlandığından emin olun.
iOS+
Başlamadan önce, iOS için Yahoo Login'i yapılandırın ve Runner'ı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.
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 belirtecini kullanma
Bir AuthProvider kullanarak, aşağıdaki isteği yaparak 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`
Bir 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();
nihai appleProvider = AppleAuthProvider();
if (kIsWeb) { FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// Ayrıca linkWithRedirect
kullanabilirsiniz } else { wait FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }
// Anonim kullanıcınız artık Apple ile Giriş Yap ``` ile bağlanabilecek ş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 bilgilerini almak için kullanılabilen 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