Kullanıcılarınızın Twitter hesaplarını kullanarak Firebase ile kimlik doğrulamasına izin verebilirsiniz Firebase kullanarak uygulamanıza web tabanlı genel OAuth Girişi entegre edebilirsiniz. Uçtan uca oturum açma akışını gerçekleştirmek için SDK.
Başlamadan önce
Twitter hesaplarını kullanarak kullanıcıların oturumunu açmak için öncelikle Twitter'ı bir Firebase projeniz için oturum açma sağlayıcısı:
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.
- Söz konusu sağlayıcının geliştirici konsolundan API anahtarını ve API gizli anahtarını
sağlayıcı yapılandırması:
- Uygulamanızı kaydetme bir geliştirici uygulaması olarak Twitter'da yükleyin ve uygulamanızın OAuth API anahtarını alın ve API gizli anahtarı.
- Firebase OAuth yönlendirme URI'nizin (ör.
my-app-12345.firebaseapp.com/__/auth/handler
) emin olun uygulamanızın ayarlar sayfasında Yetkilendirme geri çağırma URL'niz olarak Twitter uygulamasının yapılandırması.
- Kaydet'i tıklayın.
Modül (uygulama düzeyinde) Gradle dosyanızda (genellikle
<project>/<app-module>/build.gradle.kts
veya<project>/<app-module>/build.gradle
), Android için Firebase Authentication kitaplığına bağımlılığı ekleyin. Şunu kullanmanızı öneririz: Firebase Android BoM Kitaplık'ta sürüm oluşturmayı kontrol etmek içindependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.4.0")) // 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 her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanacaktır.
(Alternatif) Firebase kitaplığı bağımlılıklarını kullanmadanBoM
Firebase BoM kullanmamayı seçerseniz her Firebase kitaplığı sürümünü belirtmeniz gerekir değerini alır.
Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız, kitaplık sürümlerini yönetmek için BoM kullanmanızı öneririz. Bu, tüm sürümlerin uyumlu olduğundan emin olun.
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 parmak izini henüz belirtmediyseniz Ayarlar sayfası Firebase konsolunda görebilirsiniz. Referans İstemcinizin Kimliğini Doğrulama uygulamanızın SHA-1 parmak izini nasıl alacağınıza ilişkin ayrıntılar için.
Oturum açma akışını Firebase SDK'sı ile yönetme
Android uygulaması oluşturuyorsanız kullanıcılarınızın kimliğini doğrulamanın en kolay yolu oturum açma aşamasının tamamını yönetmek için Firebase'in Twitter hesaplarını kullanmalarını Firebase Android SDK'sı kullanın.
Oturum açma akışını Firebase Android SDK'sı ile yönetmek için aşağıdaki adımları uygulayın:
Builder'ı kullanarak OAuthProvider'ın bir örneğini sağlayıcı kimliği Twitter.com
Kotlin+KTX
val provider = OAuthProvider.newBuilder("twitter.com")
Java
OAuthProvider.Builder provider = OAuthProvider.newBuilder("twitter.com");
İsteğe bağlı: Eklemek istediğiniz ek özel OAuth parametrelerini belirtin OAuth isteğiyle gönderir.
Kotlin+KTX
// Localize to French. provider.addCustomParameter("lang", "fr")
Java
// Localize to French. provider.addCustomParameter("lang", "fr");
Twitter'ın desteklediği parametreler için bkz. Twitter OAuth dokümanları. Firebase'in gerekli parametrelerini
setCustomParameters()
Bu parametreler client_id, response_type, redirect_uri, state, scope ve response_mode parametresini kullanabilirsiniz.OAuth sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulayın. Unutmayın, diğer FirebaseAuth işlemleri gerçekleştirmeden önce, Özel Chrome Sekmesi. Bu nedenle,
OnSuccessListener
içindeki Etkinliğinize referans vermeyin ve eklediğinizOnFailureListener
, otomatik olarak ayrıldığında işlem kullanıcı arayüzünü başlatır.Öncelikle bir yanıt alıp almadığınızı kontrol etmeniz gerekir. Şununla oturum açılıyor: bu yöntem, Etkinliğinizi arka plana getirir. Bu da, sistem tarafından geri çekildi. Projenin yolunda gittiğinden bu durumda kullanıcıyı tekrar denemesini istemiyorsanız, zaten mevcut.
Bekleyen 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 tamamlandığında, provider, döndürülen
OAuthCredential
nesnesinden alınabilir.OAuth erişim jetonunu kullanarak Twitter API.
Örneğin, temel profil bilgilerini almak için REST API'yi çağırabilir.
Authorization
üstbilgisindeki erişim jetonunu iletmek:Yukarıdaki örneklerde oturum açma akışlarına odaklanılsa da kullanarak bir Twitter sağlayıcısını mevcut bir kullanıcıya bağlama olanağı
startActivityForLinkWithProvider
Örneğin, birden çok sağlayıcıyı aynı kullanıcıya göstererek bu iki sağlayıcıdan ikisiyle de oturum açabilmesini sağlar.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ı desen aşağıdaki Şu bilgileri almak için kullanılabilir:
startActivityForReauthenticateWithProvider
Yakın zamanda giriş yapılmasını gerektiren hassas işlemler için yeni kimlik bilgileri.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
Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve bilgileri (kullanıcı adı ve şifre, telefon numarası) Numara veya kimlik doğrulama sağlayıcı bilgileri (oturum açan kullanıcı). Bu yeni Firebase projenizin bir parçası olarak saklanır ve aşağıdaki verileri tanımlamak için kullanılabilir: nasıl oturum açarsa açsın, projenizdeki tüm uygulamalarda kullanılır.
-
Uygulamalarınızda, kullanıcıların temel profil bilgilerini şuradan alabilirsiniz:
FirebaseUser
nesnesini ifade eder. Bkz. Kullanıcıları Yönet. Firebase Realtime Database ve Cloud Storage içinde Güvenlik Kuralları'nı kullanarak şunları yapabilirsiniz:
auth
değişkeninden, oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilirsiniz. ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanılır.
Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz yetkilendirme sağlayıcısının kimlik bilgilerini hesaba katılmaz.
Bir kullanıcının oturumunu kapatmak için numaralı telefonu arayın
signOut
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();