Kullanıcılarınızın GitHub hesaplarını kullanarak Firebase ile kimlik doğrulaması yapması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
GitHub hesaplarıyla kullanıcıların oturumunu açmak için önce GitHub'ı 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, GitHub sağlayıcısını etkinleştirin.
- Söz konusu sağlayıcının geliştirici konsolundan İstemci Kimliği ve İstemci Gizli Anahtarı'nı
sağlayıcı yapılandırması:
- Uygulamanızı kaydetme bir geliştirici uygulaması oluşturun ve uygulamanızın OAuth 2.0 İstemci Kimliği'ni alın ve Client Secret (İstemci Gizli Anahtarı) bölümlerini kullanabilirsiniz.
- 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 GitHub 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.5.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 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.1.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 işlemini ve Firebase'in tüm oturum açma işlemlerini yürütmekten 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 github.com
Kotlin+KTX
val provider = OAuthProvider.newBuilder("github.com")
Java
OAuthProvider.Builder provider = OAuthProvider.newBuilder("github.com");
İsteğe bağlı: Eklemek istediğiniz ek özel OAuth parametrelerini belirtin OAuth isteğiyle gönderir.
Kotlin+KTX
// Target specific email with login hint. provider.addCustomParameter("login", "your-email@gmail.com")
Java
// Target specific email with login hint. provider.addCustomParameter("login", "your-email@gmail.com");
GitHub'ın desteklediği parametreler için bkz. GitHub OAuth dokümanlarına göz atın. Firebase'in gerekli parametrelerini
setCustomParameters()
Bu parametreler client_id, response_type, redirect_uri, state, scope ve response_mode parametresini kullanabilirsiniz.İsteğe bağlı: Temel profilin ötesinde, ek OAuth 2.0 kapsamlarını belirtin. kimlik doğrulama sağlayıcısından istekte bulunabilirsiniz. Uygulamanız GitHub API'lerinden gizli kullanıcı verilerine erişim gerektirdiğinde, API İzinleri altında GitHub API'lerine erişmek için GitHub geliştirici konsolu İstenen OAuth kapsamları, uygulamanın API izinlerindeki önceden yapılandırılmış veriler.
Kotlin+KTX
// Request read access to a user's email addresses. // This must be preconfigured in the app's API permissions. provider.scopes = listOf("user:email")
Java
// Request read access to a user's email addresses. // This must be preconfigured in the app's API permissions. List<String> scopes = new ArrayList<String>() { { add("user:email"); } }; provider.setScopes(scopes);
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 GitHub API'ye gidin.
Ö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 bir GitHub sağlayıcısını mevcut bir kullanıcıya bağlamak için
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();