Tampilkan postingan dengan label firebase. Tampilkan semua postingan

Membuat Halaman Login di Android dengan Firebase

Halo selamat siang pada kesempatan kali ini kita akan membuat halaman Login di Android dengan Firebase, untuk membuat login dengan Firebase sangat mudah kita tinggal memanfaatkan fungsi authentikasi dari firebase, fungsi authentikasi firebase ini sangat lengkap kita bisa login lewat facebook, google akun, twitter, email, no handphone dll, namun yang akan kita bahas pada tutorial kali ini yaitu login lewat Email dan Password.

Untuk membuat Login dengan Email/Password di Firebase Langkah pertama kita aktifkan dulu signin method nya di Firebase Console, caranya yaitu anda Login dulu ke Firebase kemudian pilih projek anda yang akan menggunakan authentikasi kemudian pada tab develop di samping kiri pilih authentication -> sign-in method -> pilih provider yang akan digunakan untuk melakukan authentikasi disini saya menggunakan provider Email/Password -> pada status pilih enable.


kemudian pada tab users tambahkan user yang akan digunakan untuk login nantinya karena pada tutorial kali ini kita tidak akan membuat register jadi usernya dimasukan secara manual dari firebase



Buka Projek Android anda yang akan ditambahkan authentikasi melalui firebase kemudian sambungkan projek anda dengan firebase lihat: cara menyambungkan projek androidke firebase
kemudian tambahkan despendency firebase auth di build.gradle
compile 'com.google.firebase:firebase-auth:11.6.2'

selanjutnya buat activity baru dan tambhkan dua buah editTeks untuk email dan password kemudian tambhkan sebuah button untuk submit, atur tampilanya agar terlihat lebih cantik seperti ini:


xml version="1.0" encoding="utf-8"?>

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"

    android:padding="10dp"

    android:background="@color/colorPrimary"

    tools:context="giviews.id.fireapp.LoginActivity">



    
        android:id="@+id/logoImage"

        android:layout_width="100dp"

        android:layout_height="130dp"

        android:layout_marginTop="20dp"

        android:layout_centerHorizontal="true"

        android:src="@drawable/logo"

        android:textAlignment="center" />



    
        android:id="@+id/txtLogo"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="Firebase Login"

        android:gravity="center"

        android:textColor="#ffffff"

        android:layout_below="@+id/logoImage"

        android:textSize="25sp"/>



    
        android:id="@+id/email"

        android:background="@drawable/input_background"

        android:padding="15dp"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="Email ..."

        android:textColor="#807f7f"

        android:layout_below="@+id/txtLogo"

        android:layout_marginTop="60dp"

        android:inputType="textEmailAddress" />



    
        android:id="@+id/password"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:hint="Password ..."

        android:background="@drawable/input_background"

        android:padding="15dp"

        android:textColor="#807f7f"

        android:layout_marginTop="20dp"

        android:layout_below="@+id/email"

        android:inputType="textPassword" />



        android:id="@+id/loginBtn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_below="@+id/password"

        android:background="@drawable/btn_background"

        android:padding="15dp"

        android:textColor="@color/colorPrimary"

        android:layout_marginTop="20dp"

        android:textSize="20dp"

        android:text="Sign In"/>


untuk background Edit Teksnya buat file input_backgrounds.xml di drawable dan masukan kode berikut:
xml version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android">

    android:color="#fff" />

    android:radius="5dp" />


dan buat lagi file btn_background.xml di drawable untuk background button nya:
xml version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android">

    android:color="@color/colorAccent" />

    android:radius="5dp" />


kemudian untuk javanya masukan kode berikut:
package giviews.id.fireapp;



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.view.WindowManager;

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;



public class LoginActivity extends AppCompatActivity {



    private EditText mEmailField;

    private EditText mPasswordField;

    private Button mloginBtn;



    private FirebaseAuth mAuth;

    private FirebaseAuth.AuthStateListener mAuthListener;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);



        //Membuat FullScreen

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);



        mEmailField = (EditText) findViewById(R.id.email);

        mPasswordField = (EditText) findViewById(R.id.password);

        mloginBtn = (Button) findViewById(R.id.loginBtn);



        mAuth = FirebaseAuth.getInstance();



        mAuthListener = new FirebaseAuth.AuthStateListener() {

            @Override

            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

                if (firebaseAuth.getCurrentUser() != null) {

                    startActivity(new Intent(LoginActivity.this, MainActivity.class) );

                }

            }

        };



        mloginBtn.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                startSignIn();

            }

        });

    }



    @Override

    protected void onStart() {

        super.onStart();



        mAuth.addAuthStateListener(mAuthListener);

    }



    private void startSignIn() {

        String email = mEmailField.getText().toString();

        String password = mPasswordField.getText().toString();



        if (TextUtils.isEmpty(email) | TextUtils.isEmpty(password)) {

            Toast.makeText(LoginActivity.this, "Fields are Empty", Toast.LENGTH_SHORT).show();

        } else {



            mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener() {

                @Override

                public void onComplete(@NonNull Task task) {



                    if (!task.isSuccessful()) {

                        Toast.makeText(LoginActivity.this, "Login Problem", Toast.LENGTH_SHORT).show();

                    }



                }

            });

        }

    }

}

Jika Login berhasil akan masuk ke MainActivity untuk isi main Activity bisa anda buat Tulisan Login Berhasil Pada TeksView, kemudian bisa anda tambahkan sebuah button untuk logout, kode logout sangat simple hanya mAuth.signOut();

Ok sekianlah tutorial kali ini pada postingan yang lain kita akan membuat cara membuat halaman registrasi dengan firebase, selamat mencoba semoga bermanfaat, jika ada yang ditanyakan silakan kirimkan pertanyaan anda pada kolom komentar dibawah

Membuat Register User dengan Firebase di Android Studio



Selamat siang Register User berguna untuk mengauthentikasi pengguna aplikasi kita, Register User biasanya terdapat pada aplikasi jejaring social ataupun ecommerce.  Register User bisa dibuat dengan menggunakan database MySQL, SQLite, MongoDB dll, tapi kali ini kita akan menggunakan Firebase, sudah disinggung sebelumnya kalau firebase ini menyediakan fungsi authentikasi yang lengkap, pada postingan sebelumnya kita telah membuat login user dengan Firebase, nah sekarang kita akan membuat form registernya. untuk membuatnya hampir sama dengan membuat form login bedanya pada register kita memasukan data user ke database kalau login hanya mencocokan data. langsung saja untuk memulainya buat dulu form registernya
 
xml version="1.0" encoding="utf-8"?>
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="com.giviews.giviewsmessenger.RegisterActivity">

           
android:id="@+id/main_page_toolbar"
       
layout="@layout/app_bar_layout"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="0dp"
       
android:layout_marginTop="0dp"
       
app:layout_constraintHorizontal_bias="0.0"
       
app:layout_constraintLeft_toLeftOf="parent"
       
app:layout_constraintRight_toRightOf="parent"
       
app:layout_constraintTop_toTopOf="parent"
       
tools:ignore="NotSibling" />

           
android:id="@+id/reg_name"
       
android:layout_width="0dp"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="8dp"
       
android:layout_marginRight="8dp"
       
android:ems="10"
       
android:hint="Name ..."
       
android:inputType="textPersonName"
       
app:layout_constraintHorizontal_bias="0.0"
       
app:layout_constraintLeft_toLeftOf="parent"
       
app:layout_constraintRight_toRightOf="parent"
       
android:layout_marginStart="8dp"
       
android:layout_marginEnd="8dp"
       
android:layout_marginTop="26dp"
       
app:layout_constraintTop_toBottomOf="@+id/textView" />

           
android:id="@+id/reg_email"
       
android:layout_width="0dp"
       
android:layout_height="wrap_content"
       
android:layout_marginLeft="8dp"
       
android:layout_marginRight="8dp"
       
android:ems="10"
       
android:hint="Email ..."
       
android:inputType="textEmailAddress"
       
app:layout_constraintHorizontal_bias="0.0"
       
app:layout_constraintLeft_toLeftOf="parent"
       
app:layout_constraintRight_toRightOf="parent"
       
android:layout_marginStart="8dp"
       
android:layout_marginEnd="8dp"
       
android:layout_marginTop="8dp"
       
app:layout_constraintTop_toBottomOf="@+id/reg_name" />

           
android:id="@+id/reg_password"
       
android:layout_width="0dp"
       
android:layout_height="wrap_content"
       
android:ems="10"
       
android:hint="Password ..."
       
android:inputType="textPassword"
       
android:layout_marginTop="8dp"
       
app:layout_constraintTop_toBottomOf="@+id/reg_email"
       
android:layout_marginLeft="8dp"
       
app:layout_constraintLeft_toLeftOf="parent"
       
android:layout_marginRight="8dp"
       
app:layout_constraintRight_toRightOf="parent"
       
app:layout_constraintHorizontal_bias="0.0"
       
android:layout_marginStart="8dp"
       
android:layout_marginEnd="8dp" />

   
android:id="@+id/reg_create_btn"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="Create Acooount"
       
android:background="@color/colorAccent"
       
android:padding="10dp"
       
android:textColor="@color/colorWhite"
       
android:layout_marginRight="8dp"
       
app:layout_constraintRight_toRightOf="parent"
       
android:layout_marginTop="16dp"
       
app:layout_constraintTop_toBottomOf="@+id/reg_password"
       
android:layout_marginEnd="8dp" />

           
android:id="@+id/textView"
       
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
       
android:layout_marginLeft="8dp"
       
android:layout_marginStart="8dp"
       
android:text="Create a New Account"
       
android:textSize="20sp"
       
android:textStyle="bold"
       
app:layout_constraintLeft_toLeftOf="parent"
       
android:layout_marginRight="8dp"
       
app:layout_constraintRight_toRightOf="parent"
       
app:layout_constraintHorizontal_bias="0.0"
       
android:layout_marginTop="26dp"
       
app:layout_constraintTop_toBottomOf="@+id/main_page_toolbar"
       
android:layout_marginEnd="8dp" />

Sambungkan projek android anda dengan firebase, kemudian buka firebase console aktifkan sigin method mengguanakan email

dan untuk script proses registernya seperti berikut, pada script berikut jika User berhasil didaftarkan maka akan diintent ke MainActivity untuk itu buat lagi Activity Main nya.
package com.giviews.giviewsmessenger;



import android.app.ProgressDialog;

import android.content.Intent;

import android.support.annotation.NonNull;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.support.v7.widget.Toolbar;

import android.text.TextUtils;

import android.util.Log;

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.google.firebase.auth.FirebaseAuthInvalidCredentialsException;

import com.google.firebase.auth.FirebaseAuthUserCollisionException;

import com.google.firebase.auth.FirebaseAuthWeakPasswordException;

import com.google.firebase.auth.FirebaseUser;

import com.google.firebase.database.DatabaseReference;

import com.google.firebase.database.FirebaseDatabase;

import com.google.firebase.iid.FirebaseInstanceId;



import java.util.HashMap;



public class RegisterActivity extends AppCompatActivity {



    private EditText mDisplayName;

    private EditText mEmail;

    private EditText mPassword;

    private Button mCreateBtn;

    private Toolbar mToolbar;

    private ProgressDialog mProgress;



    private FirebaseAuth mAuth;

    private DatabaseReference mDatabase;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_register);



        mAuth = FirebaseAuth.getInstance();

        mDatabase = FirebaseDatabase.getInstance().getReference().child("Users");

        mToolbar = (Toolbar) findViewById(R.id.main_page_toolbar);

        setSupportActionBar(mToolbar);

        getSupportActionBar().setTitle("Register");

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);



        mDisplayName = (EditText) findViewById(R.id.reg_name);

        mEmail = (EditText) findViewById(R.id.reg_email);

        mPassword = (EditText) findViewById(R.id.reg_password);

        mCreateBtn = (Button) findViewById(R.id.reg_create_btn);

        mProgress = new ProgressDialog(this);



        mCreateBtn.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                String displayname = mDisplayName.getText().toString().trim();

                String email = mEmail.getText().toString().trim();

                String password = mPassword.getText().toString().trim();



                if (!TextUtils.isEmpty(displayname) && !TextUtils.isEmpty(email) && !TextUtils.isEmpty(password)) {

                    mProgress.setTitle("Registering User");

                    mProgress.setMessage("Please wait while we create your account...");

                    mProgress.setCanceledOnTouchOutside(false);

                    mProgress.show();



                    register_user(displayname, email, password);

                }

            }

        });

    }



    private void register_user(final String displayname, String email, String password) {

        mAuth.createUserWithEmailAndPassword(email, password)

                .addOnCompleteListener(this, new OnCompleteListener() {

                    @Override

                    public void onComplete(@NonNull Task task) {



                        // If sign in fails, display a message to the user. If sign in succeeds

                        // the auth state listener will be notified and logic to handle the

                        // signed in user can be handled in the listener.

                        if (!task.isSuccessful()) {

                            mProgress.hide();



                            String error = "";

                            try {

                                throw task.getException();

                            } catch (FirebaseAuthWeakPasswordException e) {

                                error = "Weak Password";

                            } catch (FirebaseAuthInvalidCredentialsException e) {

                                error = "Invalid Email";

                            } catch (FirebaseAuthUserCollisionException e) {

                                error = "Existing account";

                            } catch (Exception e) {

                                error = "Unknown Error!";

                                e.printStackTrace();

                            }

                            Toast.makeText(getApplicationContext(), error, Toast.LENGTH_SHORT).show();

                        }else {

                            FirebaseUser currentUser = mAuth.getCurrentUser();

                            String uid = currentUser.getUid();



                            mDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(uid);

                            String device_token = FirebaseInstanceId.getInstance().getToken();



                            HashMap, String> userMap = new HashMap, String>();

                            userMap.put("name", displayname);

                            userMap.put("status", "Hi there, I'm using giviews");

                            userMap.put("image", "default");

                            userMap.put("thumb_image", "default");

                            userMap.put("device_token", device_token);



                            mDatabase.setValue(userMap).addOnCompleteListener(new OnCompleteListener() {

                                @Override

                                public void onComplete(@NonNull Task task) {

                                    mProgress.dismiss();

                                    Intent mainIntent = new Intent(RegisterActivity.this, MainActivity.class);

                                    mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

                                    startActivity(mainIntent);

                                }

                            });



                        }

                    }

                });

    }

}

Kemudian pada MainActivity buat sebuah textview dengan tulisan Selamat Anda berhasil mendaftar untuk memastikan user berhasil didaftarkan
untuk melihat user sudah berhasil mendaftar silakan lihat pada firebase console pada bagian authentication
Ok Sekianlah tutorial kali ini jika ada yang kurang jelas silakan ditanyakan pada komentar dibawah