
Firebase Authentication ne işe yarar diye başlayacak olursak, sağladığı SDK’larıyla uygulamanız da basit bir şekilde kullanıcı kimliğini doğrulamada yardımcı olur. Google, Facebook, Twitter, Github, Email/Password ve Anonim olarak kimlik doğrulamayı destekler. Bu yazımda Android için Email/Password üzerinden login olmayı anlatmaya çalışacağım.
Dikkat: Google ile login olma SHA1 e ihtiyaç duyar . Bu yüzden SHA1 imzası oluşturup oluşturmadığınızı firebase ayarlarınızdan kontrol ediniz.
Hadi Başlayalım
1. Android projenize Firebase ekleyin . eğer daha önce eklediyseniz bu adımı geçin. Nasıl proje oluşturulacağını ve projenize ekleyeceğinizi daha sonra detaylı anlatacağım.
2.build.gradle(Module.app) dosyanıza aşağıdaki kütüphaneyi ekleyin. Sürüm no en güncelini ekleyebilirsiniz.
1 |
implementation 'com.google.firebase:firebase-auth:16.1.0' |
3. Firebase Console ‘ da soldan Auth seçip Sign In Method altından Email/Password ve Google ı Enabled yapıp kaydediyoruz.

Gerekli işlemleri yaptıktan sonra Android Studio’ ya dönelim.
4. AndroidManifest.xml i açıp internet iznini sağlayalım.
1 |
<uses-permission android:name="android.permission.INTERNET" /> |
Artık temelolarak hazırız şimdi biraz da parmaklar çalışsın. 🙂
Tabi bunu söylerken Ctrl+C & Ctrl+V kullanan parmaklar değil. Kod yazalım biraz!
Email & Password ile Hesap Oluşturma
Email ve parola ile basit bir giriş yapacağımız bir şey olursa bizim işimizi görecektir.
Önce RegisterActivity ile başlayalım.
activity_register.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Activity.LoginActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="8dp" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <EditText android:id="@+id/etEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="E-Mail Adresinizi Giriniz" android:inputType="textEmailAddress" <EditText android:id="@+id/etPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Şifrenizi Giriniz" android:inputType="textPassword" android:paddingTop="10dp" <Button android:id="@+id/btRegister" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Giriş Yap" </LinearLayout> </android.support.constraint.ConstraintLayout> |
RegisterActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
package com.unalzafer.Activity; import android.content.Intent; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import com.kreatifapp.sorucevap.kpss.MainActivity; import com.kreatifapp.sorucevap.kpss.R; public class RegisterActivity extends AppCompatActivity { private FirebaseAuth auth; private EditText etEmail,etPassword; private Button btRegister; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); etEmail=(EditText)findViewById(R.id.etEmail); etPassword=(EditText)findViewById(R.id.etPassword); btRegister=(Button)findViewById(R.id.btRegister); //FirebaseAuth sınıfının nesnelerini kullanmak için getInstance kullanıyoruz. auth=FirebaseAuth.getInstance(); btRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //Kolay kullanmak için edittexlerdeki değerleri alıyoruz. String email=etEmail.getText().toString(); String password=etPassword.getText().toString(); //örnek olabilecek giriş senaryoları biz basit bişeyler yaptık if(TextUtils.isEmpty(email)){ Toast.makeText(getApplicationContext(),"Lütfen emailinizi giriniz",Toast.LENGTH_SHORT).show(); return; } else if (!email.contains("@")) { Toast.makeText(getApplicationContext(), "Lütfen geçerli bir mail adresi giriniz", Toast.LENGTH_SHORT).show(); } else if(TextUtils.isEmpty(password)){ Toast.makeText(getApplicationContext(),"Lütfen parolanızı giriniz",Toast.LENGTH_SHORT).show(); } else if (password.length()<6){ Toast.makeText(getApplicationContext(),"Parola en az 6 haneli olmalıdır",Toast.LENGTH_SHORT).show(); }else { //firebase kullanıcı kaydını oluştur auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { //İşlem başarısız ise kullanıcıya bir Toast mesajıyla bildiriyoruz. if (!task.isSuccessful()) { Toast.makeText(getApplicationContext(), "Hata Oluştu Tekrar Deneyiniz.", Toast.LENGTH_SHORT).show(); } //İşlem başarılı iser MainActivity e gönderiyoruz. else { startActivity(new Intent(getApplicationContext(), MainActivity.class)); finish(); } } }); } } }); } } |
Üye olma ekranı ve üyelik oluşturmak bu kadar basir. Firebase Console’dan girip Auth menüsünden kaydınızı görebilirsiniz.
Not: AndroidManifest.xml de RegisterActivity’i tanımlamayı unutmuşsanız uygulamanız hata verecektir.
Email & Password ve Google ile Giriş Yapma
Şimdi aynı sayfayı giriş sayfası olarak hazırlayalım.
Sağ tıkayıp New>Activity>EmptyActivity seçerek de kolayca java ve xml oluşturabilirsiniz. Android Manifest’e de otomatik olarak yeni Activitimizi tanıtan kodu ekleyecektir.
LoginActivity oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Activity.LoginActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginBottom="8dp" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <EditText android:id="@+id/etEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="E-Mail Adresinizi Giriniz" android:inputType="textEmailAddress" <EditText android:id="@+id/etPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Şifrenizi Giriniz" android:inputType="textPassword" android:paddingTop="10dp" <Button android:id="@+id/btRegister" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Giriş Yap" </LinearLayout> </android.support.constraint.ConstraintLayout> |
LoginActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
package com.unalzafer.Activity; import android.content.Intent; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.google.android.gms.auth.api.Auth; import com.google.android.gms.auth.api.signin.GoogleSignInOptions; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import com.kreatifapp.sorucevap.kpss.MainActivity; import com.kreatifapp.sorucevap.kpss.R; public class LoginActivity extends AppCompatActivity { private FirebaseAuth auth; private EditText etEmail,etPassword; private Button btLogin,btRegister; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); etEmail=(EditText)findViewById(R.id.etEmail); etPassword=(EditText)findViewById(R.id.etPassword); btLogin=(Button)findViewById(R.id.btLogin); btRegister=(Button)findViewById(R.id.btRegister); //FirebaseAuth sınıfının nesnelerini kullanmak için getInstance kullanıyoruz. auth=FirebaseAuth.getInstance(); btLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //Kolay kullanmak için edittexlerdeki değerleri alıyoruz. String email=etEmail.getText().toString(); String password=etPassword.getText().toString(); //örnek olabilecek giriş senaryoları biz basit bişeyler yaptık if(TextUtils.isEmpty(email)){ Toast.makeText(getApplicationContext(),"Lütfen emailinizi giriniz",Toast.LENGTH_SHORT).show(); return; } else if (!email.contains("@")) { Toast.makeText(getApplicationContext(), "Lütfen geçerli bir mail adresi giriniz", Toast.LENGTH_SHORT).show(); } else if(TextUtils.isEmpty(password)){ Toast.makeText(getApplicationContext(),"Lütfen parolanızı giriniz",Toast.LENGTH_SHORT).show(); } else if (password.length()<6){ Toast.makeText(getApplicationContext(),"Parola en az 6 haneli olmalıdır",Toast.LENGTH_SHORT).show(); }else { //Firebase ile bağlantıyı kurup mail ve şifre doğrulaması yapılır ve sonra giriş yapılır veya yapılmaz //Eğer işlem başarılı olursa task.isSuccessful true auth.signInWithEmailAndPassword(email,password) .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { //İşlem başarılı ise MainActivity'e gider if (task.isSuccessful()) { startActivity(new Intent(LoginActivity.this,MainActivity.class)); finish(); } else { Toast.makeText(getApplicationContext(),"Giriş Hatalı. Bilgilerinizi Kontrol Ediniz.",Toast.LENGTH_SHORT).show(); } } }); } } }); //Üye ol sayfasına gitmek için btRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(getApplicationContext(),RegisterActivity.class)); } }); } } |
Kullanıcı girişimizi de başarılı bir şekilde yaptık. En basit şekilde anlatmaya çalıştım. Senaryonun geliştirme aşaması artık sizde! Daha fazla firebase içeriği oluşturmaya çalışacağım. Yorumlarınızı bekliyorum. iii kodlar 🙂
Hocam ben 15 işçim var ve bunların puantajlarını Excel den yapıp driver’a yüklüyorum
Webview den yaptığım adrese driver adresini yazdım
Lakin herkes için bir app yaptım lakin bir değişiklik olduğun da 15 apk’yide değiştirmem gerekiyordu
Bende bir activitye kullanıcı adı ve şifre yapıp kullanıcı ve şifreyi bu activitye kodladım
Lakin yeni gelen birisi için de tekrar projeyi açıp yeniden kullanıcı adı ve şifre yazmam gerekiyor
Kullanıcı adı ve şifreyi firebaseden kendim yapsam ve oradan driver adresine y{nlendirebileciğim bir formül var mı
Alakanız için şimdiden teşekkürler
Evet yapabilirsiniz. Firebase database’i kullanın sadece url’i değişken bir değer olarak tutun, örnek olarak sitede anlattım diğer yazılarıma bakınız.