Membuat metode autentikasi menggunakan Firebase, mari langsung saja!
Instalasi yang kami perlukan untuk aplikasi ini:
- Kode Visual Studio
- pameran init “Nama Proyek”
- instalasi npm (Opsional)
- npx expo instal react-native-web@~0.18.9 [email protected] @expo/webpack-config@⁰.17.2
- npm istal @react-navigation/native
- expo instal layar-reaksi-asli-konteks-area-aman-asli-konteks
- pameran instal firebase
Sebelum kita mulai, Anda perlu membuka akun dengan https://firebase.google.com/ & memulai sebuah proyek. Sebuah proyek akan memberi Anda metode otentikasi yang akan Anda pilih E-mail & Kata Sandi
Tangkapan layar ini akan membantu Anda membuat proyek dengan firebase. Firebase akan memberi Anda kode yang memiliki kunci API, simpan untuk nanti di tutorial ini. Jangan tutup tab firebase, tetap buka, Anda akan membutuhkannya nanti di tutorial ini. Mari kita mulai…
Setelah Anda menjalankan perintah "expo init Project_Name" Anda akan melihat beberapa file ditambahkan pada Visual Studio Code Anda
- Dimulai dengan App.js
mengimpor semua yang kami butuhkan untuk App.js kami
import { StatusBar } from "expo-status-bar"; import React from "react"; import { StyleSheet, Text, View } from "react-native"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import LoginScreen from "./screens/LoginScreen"; //Importing LoginScreen import HomeScreen from "./screens/HomeScreen"; //Importing HomeScreen
Kami akan membuat Stack untuk NativeStackNavigator kami
const Stack = createNativeStackNavigator(); export default function App() { return ( <NavigationContainer> <Stack.Navigator> <Stack.Screen options={{ headerShown: false }} name="Login" component={LoginScreen} /> <Stack.Screen name="Home" component={HomeScreen} /> </Stack.Navigator> </NavigationContainer> ); } //Styling const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "#fff", alignItems: "center", justifyContent: "center", }, });
Jika Anda bingung tentang NavigationContainer & apa yang terjadi setelah ini, Anda perlu membaca dokumentasi ini → https://reactnavigation.org/
Adapun kesalahan yang mungkin Anda dapatkan — jangan khawatir, kami masih belum membuat semua yang kami perlukan untuk Aplikasi kami.
Selanjutnya — Kami membuat HomeScreen
Sedikit petunjuk → jika Anda menggunakan (Prettier Extention) di Visual Code Studio, Saat Anda membuat halaman baru (HomeScreen.js) Anda dapat menghemat banyak waktu dengan menulis “rnfes”. Ini akan menghasilkan keajaiban.
import { StyleSheet, Text, View } from "react-native"; import React from "react"; const HomeScreen = () => { return ( <View> <Text>Home Screen</Text> </View> ); }; export default HomeScreen; const styles = StyleSheet.create({});
Seperti inilah tampilan pembuatan HomeScreen.js dengan "rnfes". Mari menjadi lebih maju
- Buat gaya
const styles = StyleSheet.create({ container: { flex: 1, justifyContent: "center", alignItems: "center", }, button: { backgroundColor: "#0782F9", width: "60%", padding: 15, borderRadius: 10, alignItems: "center", marginTop: 40, }, buttonText: { color: "white", fontWeight: "700", fontSize: 16, }, });
2. Hubungkan gaya Anda ke komponen "Layar Beranda".
const HomeScreen = () => { return ( <View style={styles.container}> <TouchableOpacity style={styles.button}> <Text style={styles.buttonText}>Sign Out</Text> </TouchableOpacity> </View> ) }
Membuat LoginScreen akan menjadi proses yang sama seperti yang kita lakukan untuk HomeScreen —
- Buat LoginScreen.js sebagai file baru
2. Ketik “rnfes” dan semuanya akan muncul
Akan mempersingkat bagian desain, karena mendesain itu bukan hal favorit saya, terkadang saya hanya menggunakan figma.com & menerjemahkan desain saya ke dalam kode React.
Sebelum kita mulai mendesain UI, mari impor semua yang kita perlukan untuk proyek kita
import { useNavigation } from "@react-navigation/core"; import React, { useEffect, useState } from "react"; import { KeyboardAvoidingView, StyleSheet, Text, TextInput, TouchableOpacity, View, } from "react-native"; import { createUserWithEmailAndPassword, signInWithEmailAndPassword, } from "firebase/auth"; import { auth } from "./firebase";
Mari kita mulai dengan gaya
const styles = StyleSheet.create({ container: { flex: 1, justifyContent: "center", alignItems: "center", }, inputContainer: { width: "80%", }, input: { backgroundColor: "white", paddingHorizontal: 15, paddingVertical: 10, borderRadius: 10, marginTop: 5, }, buttonContainer: { width: "60%", justifyContent: "center", alignItems: "center", marginTop: 40, }, button: { backgroundColor: "#0782F9", width: "100%", padding: 15, borderRadius: 10, alignItems: "center", }, buttonOutline: { backgroundColor: "white", marginTop: 5, borderColor: "#0782F9", borderWidth: 2, }, buttonText: { color: "white", fontWeight: "700", fontSize: 16, }, buttonOutlineText: { color: "#0782F9", fontWeight: "700", fontSize: 16, }, });
Pada komponen LoginScreen Anda, Anda akan mengembalikan beberapa elemen UI sehingga pengguna dapat memasukkan emailnya.
<KeyboardAvoidingView style={styles.container} behavior="padding"> <View style={styles.inputContainer}> <TextInput placeholder="Email" value={email} // onChangeText={(text) => setEmail(text)} style={styles.input} /> <TextInput placeholder="Password" value={password} // onChangeText={(text) => setPassword(text)} style={styles.input} secureTextEntry /> </View> <View style={styles.buttonContainer}> <TouchableOpacity onPress={handleSignIn} style={styles.button}> <Text style={styles.buttonText}>Login</Text> </TouchableOpacity> <TouchableOpacity // onPress={handleSignUp} style={[styles.button, styles.buttonOutline]} > <Text style={styles.buttonOutlineText}>Register</Text> </TouchableOpacity> </View> </KeyboardAvoidingView>
Tanda “//” pada kode adalah hal-hal yang belum kita nyatakan, jadi lebih baik biarkan saja dikomentari sampai kita memasangnya.
Untuk LoginScreen ini kita akan menggunakan hook useEffect dari React.
Mari kita mulai dengan mendeklarasikan hal-hal yang kita perlukan untuk Login kita.
Email & Kata Sandi
const [email, setEmail] = useState(""); const [password, setPassword] = useState("");
Gaya navigasi kita adalah, seperti yang kami nyatakan di atas, useNavigation
const navigation = useNavigation();
Kami akan menggunakan "useEffect" untuk memastikan bahwa setelah pengguna kami login, dia harus diarahkan ke HomeScreen kami
useEffect(() => { const unsubscribe = auth.onAuthStateChanged((user) => { if (user) { navigation.replace("Home"); } }); return unsubscribe; }, []);
Bagaimana kabar kita sampai disini? Jika Anda merasa pusing, tidak apa-apa, pemrograman itu sulit, tidak ada yang pandai memprogram.
Buat folder baru di file root Anda bernama “firebase.js”. Folder ini menghubungkan Anda ke akun Firebase Anda.
import { initializeApp } from "firebase/app"; import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword, } from "firebase/auth"; const firebaseConfig = { apiKey: XXXX, authDomain: XXXX, projectId: XXXX, storageBucket: XXXX, messagingSenderId: XXXX appId: XXXX, }; const app = initializeApp(firebaseConfig); const auth = getAuth(app); export { auth };
Kode “XXXX” adalah kode pribadi Anda dari Firebase. Hati-hati, jangan membaginya dengan siapa pun. Masyarakat bisa memanfaatkannya untuk kepentingannya.
Saatnya menghubungkan firebase dengan LoginScreen kami
Di dalam komponen LoginScreen Anda, buat fungsi baru bernama handleSignUp
const handleSignUp = () => { createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { const user = userCredential.user; console.log(user.email); }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; }); };
Buat fungsi lain yang disebut handleSignIn
const handleSignIn = () => { signInWithEmailAndPassword(auth, email, password) .then((userCredential) => { const user = userCredential.user; console.log("Signed in with: ", user.email); }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; }); };
Sekarang cepat pergi & batalkan komentar pada 3 komentar Anda di bagian kembalinya komponen LoginScreen Anda.
// onChangeText={(text) => setEmail(text)} // onChangeText={(text) => setPassword(text)} // onPress={handleSignUp}
Setelah Anda menghapus komentar pada 3 baris ini, cobalah aplikasi Anda
Jalankan dari ponsel atau web Anda.
Jika ada kesalahan, coba selesaikan & bangun pengetahuan yang sangat baik tentang cara men-debug aplikasi.
Saya rasa Anda siap membuat aplikasi!