Uçtan uca oturum açma akışını gerçekleştirmek için Firebase SDK'sı ile web tabanlı genel OAuth Girişi'ni uygulamanıza entegre ederek kullanıcılarınızın Twitter hesaplarını kullanarak Firebase ile kimlik doğrulaması gerçekleştirmelerini sağlayabilirsiniz.
Başlamadan önce
Kullanıcıların Twitter hesaplarını kullanarak oturum açmak için öncelikle Firebase projeniz için oturum açma sağlayıcısı olarak Twitter'ı etkinleştirmeniz gerekir:
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
- Firebase konsolunda Auth bölümünü açın.
- Oturum açma yöntemi sekmesinde Twitter sağlayıcısını etkinleştirin.
- Bu sağlayıcının geliştirici konsolundaki API anahtarını ve API gizli anahtarını sağlayıcı yapılandırmasına ekleyin:
- Twitter'da geliştirici uygulaması olarak uygulamanızı kaydedin ve uygulamanızın OAuth API anahtarını ve API gizli anahtarını alın.
- Firebase OAuth yönlendirme URI'nizin (ör.
my-app-12345.firebaseapp.com/__/auth/handler
), Twitter uygulamanızın yapılandırmasındaki ayarlar sayfasında, Yetkilendirme geri çağırma URL'niz olarak ayarlandığından emin olun.
- Kaydet'i tıklayın.
Modül (uygulama düzeyi) Gradle dosyanıza (genellikle
<project>/<app-module>/build.gradle.kts
veya<project>/<app-module>/build.gradle
), Android için Firebase Authentication kitaplığına bağımlılığı ekleyin. Kitaplık sürümü oluşturmayı kontrol etmek için Firebase Android BoM'u kullanmanızı öneririz.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.1")) // Add 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 kullanıldığında uygulamanız Firebase Android kitaplıklarının her zaman uyumlu sürümlerini kullanır.
(Alternatif) Firebase kitaplığı bağımlılıklarını BoM'u kullanmadan ekleyin
Firebase BoM'yi kullanmamayı seçerseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.
Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için tüm sürümlerin uyumlu olmasını sağlamak için BoM kullanmanızı kesinlikle öneririz.
dependencies { // Add 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:23.0.0") }
Uygulamanızın SHA-1 dijital parmak izini henüz belirtmediyseniz Firebase konsolunun Ayarlar sayfasından bu işlemi yapın. Uygulamanızın SHA-1 parmak izini almayla ilgili ayrıntılar için İstemcinizin Kimlik Doğrulaması bölümüne bakın.
Oturum açma akışını Firebase SDK'sı ile yönetme
Android uygulaması oluşturuyorsanız Twitter hesaplarını kullanarak Firebase ile kullanıcılarınızın kimliklerini doğrulamanın en kolay yolu, oturum açma akışının tamamını Firebase Android SDK ile yönetmektir.
Firebase Android SDK ile oturum açma akışını yönetmek için aşağıdaki adımları uygulayın:
Builder aracını kullanarak Twitter.com sağlayıcı kimliğine sahip bir OAuthProvider örneği oluşturun
Kotlin+KTX
val provider = OAuthProvider.newBuilder("twitter.com")
Java
OAuthProvider.Builder provider = OAuthProvider.newBuilder("twitter.com");
İsteğe bağlı: OAuth isteğiyle birlikte göndermek istediğiniz ek özel OAuth parametrelerini belirtin.
Kotlin+KTX
// Localize to French. provider.addCustomParameter("lang", "fr")
Java
// Localize to French. provider.addCustomParameter("lang", "fr");
Twitter'ın desteklediği parametreler için Twitter OAuth belgelerine bakın. Firebase için gerekli parametreleri
setCustomParameters()
ile iletemeyeceğinizi unutmayın. Bu parametreler şunlardır: client_id, response_type, redirect_uri, state, scope ve response_mode.OAuth sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulayın. Diğer FirebaseAuth işlemlerinden farklı olarak bu işlemin, bir Özel Chrome Sekmesi açarak kullanıcı arayüzünüzün kontrolünü ele alacağını unutmayın. Bu nedenle, işlem kullanıcı arayüzünü başlattığında bunlar hemen ayrılacağı için eklediğiniz
OnSuccessListener
veOnFailureListener
içinde Etkinliğinize referans vermeyin.Öncelikle yanıt alıp almadığınızı kontrol etmeniz gerekir. Bu yöntemle oturum açtığınızda Etkinliğiniz arka plana alınır, bu da oturum açma akışı sırasında sistem tarafından geri çekilebileceği anlamına gelir. Böyle bir durumda kullanıcıyı tekrar denemesini istemeyeceğinizden emin olmak için zaten bir sonucun olup olmadığını kontrol etmeniz gerekir.
Bekleyen bir sonuç olup olmadığını kontrol etmek için
getPendingAuthResult
numaralı telefonu arayın:Kotlin+KTX
val pendingResultTask = firebaseAuth.pendingAuthResult if (pendingResultTask != null) { // There's something already here! Finish the sign-in for your user. pendingResultTask .addOnSuccessListener { // User is signed in. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // ((OAuthCredential)authResult.getCredential()).getAccessToken(). // The OAuth secret can be retrieved by calling: // ((OAuthCredential)authResult.getCredential()).getSecret(). } .addOnFailureListener { // Handle failure. } } else { // There's no pending result so you need to start the sign-in flow. // See below. }
Java
Task<AuthResult> pendingResultTask = firebaseAuth.getPendingAuthResult(); if (pendingResultTask != null) { // There's something already here! Finish the sign-in for your user. pendingResultTask .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // User is signed in. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // ((OAuthCredential)authResult.getCredential()).getAccessToken(). // The OAuth secret can be retrieved by calling: // ((OAuthCredential)authResult.getCredential()).getSecret(). } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Handle failure. } }); } else { // There's no pending result so you need to start the sign-in flow. // See below. }
Oturum açma akışını başlatmak için
startActivityForSignInWithProvider
numaralı telefonu arayın:Kotlin+KTX
firebaseAuth .startActivityForSignInWithProvider(activity, provider.build()) .addOnSuccessListener { // User is signed in. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // ((OAuthCredential)authResult.getCredential()).getAccessToken(). // The OAuth secret can be retrieved by calling: // ((OAuthCredential)authResult.getCredential()).getSecret(). } .addOnFailureListener { // Handle failure. }
Java
firebaseAuth .startActivityForSignInWithProvider(/* activity= */ this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // User is signed in. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // ((OAuthCredential)authResult.getCredential()).getAccessToken(). // The OAuth secret can be retrieved by calling: // ((OAuthCredential)authResult.getCredential()).getSecret(). } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Handle failure. } });
İşlem başarıyla tamamlandığında, sağlayıcıyla ilişkili OAuth erişim jetonu döndürülen
OAuthCredential
nesnesinden alınabilir.OAuth erişim jetonunu kullanarak Twitter API'yi çağırabilirsiniz.
Örneğin, temel profil bilgilerini almak için REST API'yi çağırarak erişim jetonunu
Authorization
üst bilgisinde aktarabilirsiniz:Yukarıdaki örnekler oturum açma akışlarına odaklanmaktadır. Bununla birlikte,
startActivityForLinkWithProvider
kullanarak bir Twitter sağlayıcısını mevcut bir kullanıcıya da bağlayabilirsiniz. Örneğin, aynı kullanıcıya birden fazla sağlayıcı bağlayarak iki sağlayıcıdan biriyle oturum açabilirsiniz.Kotlin+KTX
// The user is already signed-in. val firebaseUser = firebaseAuth.currentUser!! firebaseUser .startActivityForLinkWithProvider(activity, provider.build()) .addOnSuccessListener { // Provider credential is linked to the current user. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // authResult.getCredential().getAccessToken(). // The OAuth secret can be retrieved by calling: // authResult.getCredential().getSecret(). } .addOnFailureListener { // Handle failure. }
Java
// The user is already signed-in. FirebaseUser firebaseUser = firebaseAuth.getCurrentUser(); firebaseUser .startActivityForLinkWithProvider(/* activity= */ this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // Provider credential is linked to the current user. // IdP data available in // authResult.getAdditionalUserInfo().getProfile(). // The OAuth access token can also be retrieved: // authResult.getCredential().getAccessToken(). // The OAuth secret can be retrieved by calling: // authResult.getCredential().getSecret(). } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Handle failure. } });
Aynı kalıp, son giriş gerektiren hassas işlemler için yeni kimlik bilgileri almak üzere
startActivityForReauthenticateWithProvider
ile kullanılabilir.Kotlin+KTX
// The user is already signed-in. val firebaseUser = firebaseAuth.currentUser!! firebaseUser .startActivityForReauthenticateWithProvider(activity, provider.build()) .addOnSuccessListener { // User is re-authenticated with fresh tokens and // should be able to perform sensitive operations // like account deletion and email or password // update. } .addOnFailureListener { // Handle failure. }
Java
// The user is already signed-in. FirebaseUser firebaseUser = firebaseAuth.getCurrentUser(); firebaseUser .startActivityForReauthenticateWithProvider(/* activity= */ this, provider.build()) .addOnSuccessListener( new OnSuccessListener<AuthResult>() { @Override public void onSuccess(AuthResult authResult) { // User is re-authenticated with fresh tokens and // should be able to perform sensitive operations // like account deletion and email or password // update. } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Handle failure. } });
Sonraki adımlar
Bir kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve oturum açan kullanıcının kimlik bilgilerine (kullanıcı adı, şifre, 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 başlıklı makaleyi inceleyin. Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda, oturum açan kullanıcının benzersiz kullanıcı kimliğini
auth
değişkeninden alabilir ve kullanıcının erişebileceği verileri kontrol etmek için kullanabilirsiniz.
Kimlik doğrulama sağlayıcısı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak kullanıcıların birden fazla 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
numaralı telefonu arayın:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();