Facebook Oturumunu uygulamanıza entegre ederek kullanıcılarınızın Facebook hesaplarını kullanarak Firebase ile kimlik doğrulamasına izin verebilirsiniz.
Sen başlamadan önce
Henüz yapmadıysanız, Android projenize Firebase'i ekleyin .
- Geliştiriciler için Facebook sitesinde, uygulamanız için Uygulama Kimliği ve Uygulama Sırrı edinin.
- Facebook Oturumunu Etkinleştir:
- In Firebase konsoluna , Auth bölümünü açın.
- Oturum açma yöntemi sekmesinde, Facebook oturum açma yöntemini etkinleştirin ve Facebook'tan aldığınız Uygulama Kimliğini ve Uygulama Sırrını belirtin.
- Sonra emin olun sizin OAuth yönlendirme URI (örn
my-app-12345.firebaseapp.com/__/auth/handler
) üzerinde Facebook uygulamanın ayarlar sayfasında OAuth yönlendirme URI'lerinin biri olarak listelenir Geliştiriciler için Facebook Ürününde sitede Ayarlar> Facebook Oturum Açma yapılandırması.
Firebase Android BoM'yi kullanarak, modülünüzde (uygulama düzeyinde) Gradle dosyasında (genellikle
app/build.gradle
)app/build.gradle
Authentication Android kitaplığının bağımlılığınıapp/build.gradle
.Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.6.0') // Declare the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth' }
Firebase Android BoM'yi kullandığınızda , uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.
(Alternatif) Bom kullanmadan Firebase kütüphane bağımlılıklarını beyan
Firebase BoM'yi kullanmamayı seçerseniz, bağımlılık satırında her bir Firebase kitaplık sürümünü belirtmeniz gerekir.
Uygulamanızda birden çok Firebase kitaplığı kullanırsanız, kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ettiğimizi unutmayın; bu, tüm sürümlerin uyumlu olmasını sağlar.
dependencies { // Declare the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth:20.0.3' }
Kotlin + KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.6.0') // Declare the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx' }
Firebase Android BoM'yi kullandığınızda , uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.
(Alternatif) Bom kullanmadan Firebase kütüphane bağımlılıklarını beyan
Firebase BoM'yi kullanmamayı seçerseniz, bağımlılık satırında her bir Firebase kitaplık sürümünü belirtmeniz gerekir.
Uygulamanızda birden çok Firebase kitaplığı kullanırsanız, kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ettiğimizi unutmayın; bu, tüm sürümlerin uyumlu olmasını sağlar.
dependencies { // Declare the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx:20.0.3' }
Firebase ile kimlik doğrulayın
- Geliştirici belgelerini takip ederek Facebook Oturumunu uygulamanıza entegre edin.
LoginButton
veyaLoginManager
nesnesini yapılandırdığınızda,public_profile
veemail
izinlerini isteyin. FacebookLoginButton
birLoginButton
kullanarak entegreLoginButton
, oturum açma etkinliğiniz aşağıdakine benzer bir koda sahiptir:Java
// Initialize Facebook Login button mCallbackManager = CallbackManager.Factory.create(); LoginButton loginButton = mBinding.buttonFacebookLogin; loginButton.setReadPermissions("email", "public_profile"); loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.d(TAG, "facebook:onSuccess:" + loginResult); handleFacebookAccessToken(loginResult.getAccessToken()); } @Override public void onCancel() { Log.d(TAG, "facebook:onCancel"); // ... } @Override public void onError(FacebookException error) { Log.d(TAG, "facebook:onError", error); // ... } }); // ... @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Pass the activity result back to the Facebook SDK mCallbackManager.onActivityResult(requestCode, resultCode, data); }
Kotlin + KTX
// Initialize Facebook Login button callbackManager = CallbackManager.Factory.create() binding.buttonFacebookLogin.setReadPermissions("email", "public_profile") binding.buttonFacebookLogin.registerCallback(callbackManager, object : FacebookCallback<LoginResult> { override fun onSuccess(loginResult: LoginResult) { Log.d(TAG, "facebook:onSuccess:$loginResult") handleFacebookAccessToken(loginResult.accessToken) } override fun onCancel() { Log.d(TAG, "facebook:onCancel") // ... } override fun onError(error: FacebookException) { Log.d(TAG, "facebook:onError", error) // ... } }) // ... override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) // Pass the activity result back to the Facebook SDK callbackManager.onActivityResult(requestCode, resultCode, data) }
- Oturum açma etkinliğinizin
onCreate
yönteminde,FirebaseAuth
nesnesinin paylaşılan örneğini alın:Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
Kotlin + KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
- Etkinliğinizi başlatırken, kullanıcının şu anda oturum açmış olup olmadığını kontrol edin:
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
Kotlin + KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
- Bir kullanıcı başarıyla oturum açtıktan sonra,
LoginButton
onSuccess
geri arama yöntemindeonSuccess
kullanıcı için bir erişim jetonu alın, bunu bir Firebase kimlikonSuccess
veLoginButton
kimlik bilgilerini kullanarak Firebase ile kimlik doğrulayın:Java
private void handleFacebookAccessToken(AccessToken token) { Log.d(TAG, "handleFacebookAccessToken:" + token); AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken()); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCredential:failure", task.getException()); Toast.makeText(FacebookLoginActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } // ... } }); }
Kotlin + KTX
private fun handleFacebookAccessToken(token: AccessToken) { Log.d(TAG, "handleFacebookAccessToken:$token") val credential = FacebookAuthProvider.getCredential(token.token) auth.signInWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCredential:failure", task.exception) Toast.makeText(baseContext, "Authentication failed.", Toast.LENGTH_SHORT).show() updateUI(null) } // ... } }
signInWithCredential
çağrısı başarılı olursa, kullanıcının hesap verilerini almak içingetCurrentUser
yöntemini kullanabilirsiniz.
Sonraki adımlar
Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı oluşturulur ve oturum açan kullanıcı kimlik bilgilerine (yani kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığına bakılmaksızın projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.
Uygulamalarınızda, kullanıcının temel profil bilgilerini
FirebaseUser
nesnesinden alabilirsiniz. Kullanıcıları Yönetme konusuna bakın.Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda , oturum
auth
kullanıcının benzersiz kullanıcı kimliğiniauth
değişkeninden alabilir ve bir kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.
Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak , kullanıcıların birden çok kimlik doğrulama sağlayıcısı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz .
Bir kullanıcının oturumunu kapatmak için signOut
arayın:
Java
FirebaseAuth.getInstance().signOut();
Kotlin + KTX
Firebase.auth.signOut()