STMIK PRIMAKARA
MODUL V
Authentication and Firebase Connection
Tujuan :
Dasar Teori
1. Firebase
Firebase Realtime Database adalah database yang di-host di cloud. Data disimpan sebagai
JSON dan disinkronkan secara realtime ke setiap klien yang terhubung. Ketika Anda membuat
aplikasi lintas-platform dengan SDK Android, iOS, dan JavaScript, semua klien akan berbagi
sebuah instance Realtime Database dan menerima update data terbaru secara otomatis.
Firebase Realtime Database memungkinkan Anda untuk membuat aplikasi kolaboratif dan kaya
fitur dengan menyediakan akses yang aman ke database, langsung dari kode sisi klien. Data
disimpan di drive lokal. Bahkan saat offline sekalipun, peristiwa realtime terus berlangsung,
sehingga pengguna akhir akan merasakan pengalaman yang responsif. Ketika koneksi
perangkat pulih kembali, Realtime Database akan menyinkronkan perubahan data lokal dengan
update jarak jauh yang terjadi selama klien offline, sehingga setiap perbedaan akan otomatis
digabungkan.
Tugas Pendahuluan
1. Apa itu Firebase?
2. Apa itu RNFirebase?
3. Apa perbedaan native SDK Firebase dengan web SDK Firebase?
Kegiatan Praktikum
Setup Project React-Native (Menghubungkan project react-native
dengan firebase)
Buat project react-native baru dengan perintah (sesuaikan nama project masing - masing)
react-native init reactfirebase
Lalu install package package react-navigation karena kita akan menggunakan navigasi
nantinya.
yarn add react-navigation@2.18.2
atau
npm install react-navigation@2.18.2 --save
Untuk package yang digunakan untuk menghubungkan project react native dengan firebase kita
akan menggunakan react native sdk (bisa dilihat di https://rnfirebase.io ). Pada modul ini kita
hanya melakukan setup project untuk platform android jika ingin melakukan setup untuk ios bisa
dilihat pada website https://rnfirebase.io
Install package react-native-firebase dengan perintah berikut,
yarn add react-native-firebase@5.0.0
atau
npm install --save react-native-firebase@5.0.0
Lalu klik icon android untuk menambahkan project android pada firebase.
Kembali pada project react native, pada command line kita perlu melakukan link terhadap
firebase sdk yang telah kita install dengan perintah berikut
react-native link react-native-firebase
Kemudian pindahkan file google-services.json yang telah didapatkan dari config pada firebase
ke folder project android/app/google-services.json
Kemudian pada file android/app/build.gradle tambahkan code berikut pada bagian paling
bawah
apply plugin: 'com.google.gms.google-services'
Masih pada file android/app/build.gradle pada bagian dependencies tambahkan code berikut ini
dependencies {
// This should be here already
implementation project(':react-native-firebase')
...
Membuat Auth
Untuk menggunakan module auth kita perlu melakukan import dan menambahkan module pada
file android/app/build.gradle pada bagian dependencies tambahkan baris berikut
dependencies {
// ...
implementation "com.google.firebase:firebase-auth:16.0.3"
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNFirebasePackage(),
new RNFirebaseAuthPackage() // <-- Add this line
);
}
};
// ...
}
Sebelum melanjutkan ke coding pertama kita harus melakukan setup authentication pada
firebase, masuk ke console firebase masing - masing, lalu pilih menu authentication
App.js
// App.js
import { createStackNavigator, createSwitchNavigator } from 'react-navigation';
efault createSwitchNavigator({
export d
Auth: { screen: AuthStack },
Main: { screen: MainStack }
});
Home.js
import React, { Component } from 'react';
import { StyleSheet, View, Text, Button } from 'react-native';
import firebase from 'react-native-firebase';
render() {
return (
<View style={styles.wrapper}>
<Text>Home</Text>
<Button title="LOGOUT" color="blue" onPress={this.handleLogout} />
</View>
);
}
}
Login.js
import React, { Component } from 'react';
import { StyleSheet, View, Text, TextInput, Button } from 'react-native';
import firebase from 'react-native-firebase';
render() {
return (
<View style={styles.wrapper}>
<Text style={styles.title}>LOGIN</Text>
<TextInput
style={styles.input}
placeholder="Email"
onChangeText={this.handleChangeInput('email')}
/>
<TextInput
style={styles.input}
placeholder="Password"
onChangeText={this.handleChangeInput('password')}
/>
<Button title="Submit" color="blue" onPress={this.handleOnSubmit} />
<Text style={styles.textAccount}>Doesn't have an account?</Text>
<Button
title="Signup Now"
color="blue"
onPress={() => this.props.navigation.navigate('Signup')}
/>
</View>
);
}
}
Signup.js
import React, { Component } from 'react';
import { StyleSheet, View, Text, TextInput, Button } from 'react-native';
import firebase from 'react-native-firebase';
render() {
return (
<View style={styles.wrapper}>
<Text style={styles.title}>SIGNUP</Text>
<TextInput
style={styles.input}
placeholder="Email"
onChangeText={this.handleChangeInput('email')}
/>
<TextInput
style={styles.input}
placeholder="Password"
onChangeText={this.handleChangeInput('password')}
/>
<Button title="Submit" color="blue" onPress={this.handleOnSubmit} />
</View>
);
}
}
SplashScreen.js
import React, { Component } from 'react';
import { StyleSheet, View, ActivityIndicator } from 'react-native';
import firebase from 'react-native-firebase';
render() {
return (
<View style={styles.wrapper}>
<ActivityIndicator size="large" color="white" />
</View>
);
}
}
Tugas Mandiri
1. Buat project akhir masing - masing dengan menggunakan firebase sebagai backend
sehingga project tersebut sudah dapat melakukan pendaftaran dan login. Sesuaikan
tampilannya dengan project yang akan anda buat.
Referensi
https://firebase.google.com/docs/database/?hl=id
https://rnfirebase.io