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ı Kurulum 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);
}
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+ ve Android
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.
sign_in_with_apple
eklentisini ve crypto
paketini kurun:
dependencies:
sign_in_with_apple: ^3.0.0
crypto: ^3.0.1
tutucu7 l10n-yerimport 'dart:convert';
import 'dart:math';
import 'package:crypto/crypto.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:sign_in_with_apple/sign_in_with_apple.dart';
/// Generates a cryptographically secure random nonce, to be included in a
/// credential request.
String generateNonce([int length = 32]) {
const charset =
'0123456789ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-._';
final random = Random.secure();
return List.generate(length, (_) => charset[random.nextInt(charset.length)])
.join();
}
/// Returns the sha256 hash of [input] in hex notation.
String sha256ofString(String input) {
final bytes = utf8.encode(input);
final digest = sha256.convert(bytes);
return digest.toString();
}
Future<UserCredential> signInWithApple() async {
// To prevent replay attacks with the credential returned from Apple, we
// include a nonce in the credential request. When signing in with
// Firebase, the nonce in the id token returned by Apple, is expected to
// match the sha256 hash of `rawNonce`.
final rawNonce = generateNonce();
final nonce = sha256ofString(rawNonce);
// Request credential for the currently signed in Apple account.
final appleCredential = await SignInWithApple.getAppleIDCredential(
scopes: [
AppleIDAuthorizationScopes.email,
AppleIDAuthorizationScopes.fullName,
],
nonce: nonce,
);
// Create an `OAuthCredential` from the credential returned by Apple.
final oauthCredential = OAuthProvider("apple.com").credential(
idToken: appleCredential.identityToken,
rawNonce: rawNonce,
);
// Sign in the user with Firebase. If the nonce we generated earlier does
// not match the nonce in `appleCredential.identityToken`, sign in will fail.
return await FirebaseAuth.instance.signInWithCredential(oauthCredential);
}
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 {
// Create and configure an OAuthProvider for Sign In with Apple.
final provider = OAuthProvider("apple.com")
..addScope('email')
..addScope('name');
// Sign in the user with Firebase.
return await FirebaseAuth.instance.signInWithPopup(provider);
}
Bir alternatif, signInWithRedirect
kullanmaktır. Bu durumda tarayıcı uygulamanızdan uzaklaşacaktır ve uygulama başlatma sırasında kimlik doğrulama sonuçlarını kontrol etmek için getRedirectResult
kullanmanız gerekir.
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.
iOS+ ve Android
Yerel platformlarda, hem Twitter SDK'yı yüklemek hem de kimlik doğrulama akışını tetiklemek için bir 3. taraf kitaplığı gerekir.
twitter_login
eklentisini kurun:
dependencies:
twitter_login: ^4.0.1
twitter_login
yapılandırma adımlarını dikkatlice uyguladığınızdan ve Twitter Developer Portal'da eşleşen bir URL şemasıyla bir geri arama URL'si kaydettiğinizden emin olun.
import 'package:twitter_login/twitter_login.dart';
Future<UserCredential> signInWithTwitter() async {
// Create a TwitterLogin instance
final twitterLogin = new TwitterLogin(
apiKey: '<your consumer key>',
apiSecretKey:' <your consumer secret>',
redirectURI: '<your_scheme>://'
);
// Trigger the sign-in flow
final authResult = await twitterLogin.login();
// Create a credential from the access token
final twitterAuthCredential = TwitterAuthProvider.credential(
accessToken: authResult.authToken!,
secret: authResult.authTokenSecret!,
);
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithCredential(twitterAuthCredential);
}
ağ
Web'de Twitter SDK, Firebase konsolunda sağlanan Twitter uygulama ayrıntılarını kullanarak kimlik doğrulama akışının otomatik olarak işlenmesi için destek sağlar. Firebase konsolundaki geri arama URL'sinin, geliştirici konsolundaki Twitter uygulamanıza bir geri arama URL'si olarak eklendiğinden emin olun.
Örneğin:
Bir Twitter sağlayıcısı oluşturun ve signInWithPopup
yönteminin kimlik bilgilerini sağlayın. Bu, kullanıcının Twitter uygulamanızda oturum açmasını isteyen yeni bir pencereyi tetikleyecektir:
Future<UserCredential> signInWithTwitter() async {
// Create a new provider
TwitterAuthProvider twitterProvider = TwitterAuthProvider();
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(twitterProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(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.
import 'package:github_sign_in/github_sign_in.dart';
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await _auth.signInWithAuthProvider(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);
}