Pertama, aktifkan metode login dengan google di firebase.
Buat project baru di firebase kalian. Masuk ke console Firebase
masuk ke project kalian, kemudian pilih menu authentication, lalu pilih tab metode login dan aktifkan metode login dengan google. Jangan lupa untuk klik button save.
Kedua, Tambahkan firebase ke aplikasi React.
Setelah itu, copy kan kode yang sudah di dapat, di dalam src/app.js
src/App.js
import React, { Component } from 'react';import './App.css';var config = {apiKey: "AIzaSyAxcsrM3GwgtOMP0lMdHm-y2y1i98A-_zc",authDomain: "login-with-35d08.firebaseapp.com",databaseURL: "https://login-with-35d08.firebaseio.com",projectId: "login-with-35d08",storageBucket: "login-with-35d08.appspot.com",messagingSenderId: "206347566463"};class App extends Component {render() {return (<div>Login With Google</div>);}}
export default App;
jalankan npm install firebase di terminal kalian, pastikan path di terminal sesuai dengan folder react kalian.
sediakan state user yang di inisialisasi dengan array kososng, kemudian import firebase di aplikasi kalian dan lakukan konfigurasi seperti kode di bawah.
jalankan npm install firebase di terminal kalian, pastikan path di terminal sesuai dengan folder react kalian.
sediakan state user yang di inisialisasi dengan array kososng, kemudian import firebase di aplikasi kalian dan lakukan konfigurasi seperti kode di bawah.
import React, { Component } from 'react';
import firebase from 'firebase'import './App.css';
var config = {apiKey: "AIzaSyAxcsrM3GwgtOMP0lMdHm-y2y1i98A-_zc",authDomain: "login-with-35d08.firebaseapp.com",databaseURL: "https://login-with-35d08.firebaseio.com",projectId: "login-with-35d08",storageBucket: "login-with-35d08.appspot.com",messagingSenderId: "206347566463"};firebase.initializeApp(config);
const provider = new firebase.auth.GoogleAuthProvider();class App extends Component {
state = {user : []}render() {return (<div>Login With Google</div>);}}export default App;
Ketiga, pengkondisian tampilan.
Kita akan mengkondisikan tampilan kita sesuai yang kita mau, yaitu ketika user belum login, hany akan tampil satu tombol login with google, ketika user sudah berhasil login, maka akan ada satu tombol log out dan display name user beserta photo profile nya.
Saya menggunakan if ternary untuk pengkondisian kali ini. Perhatikan dan simak kode yang sudah saya bold.
import React, { Component } from 'react';
import firebase from 'firebase'import './App.css';var config = {apiKey: "AIzaSyAxcsrM3GwgtOMP0lMdHm-y2y1i98A-_zc",authDomain: "login-with-35d08.firebaseapp.com",databaseURL: "https://login-with-35d08.firebaseio.com",projectId: "login-with-35d08",storageBucket: "login-with-35d08.appspot.com",messagingSenderId: "206347566463"};firebase.initializeApp(config);
const provider = new firebase.auth.GoogleAuthProvider();class App extends Component {
state = {user : []}render() {return (<div><div style={{display : 'flex' , justifyContent:'center',marginTop:'300px'}}>{this.state.user.length == 0?<input type='button' value='login with google' onClick={this.onBtnLoginClick} />:<div><img src={this.state.user.photoURL } alt='broken' width="200px"/><p>{this.state.user.displayName}</p><input type='button' value='log out' onClick={this.onBtnLogoutClick} /></div>}</div></div>);}}export default App;
Keempat, membuat function untuk event on click pada button login
buat function dengan nama onBtnLoginClick, saya menggunakan arrow function punyanya es6. Di dalam function tersebut, saya menjalankan firebase.auth().signInWithPopup(provider) yang me return sebuah promise, dimana ketika login berhasil, akan masuk ke .then() dan ketika login gagal, akan masuk ke .catch() .
Di dalam function tersebut, saya juga menambahkan this.setState() untuk merubah state user yang tadinya array kosong menjadi array dari response firebase
import React, { Component } from 'react';
import firebase from 'firebase'import './App.css';var config = {apiKey: "AIzaSyAxcsrM3GwgtOMP0lMdHm-y2y1i98A-_zc",authDomain: "login-with-35d08.firebaseapp.com",databaseURL: "https://login-with-35d08.firebaseio.com",projectId: "login-with-35d08",storageBucket: "login-with-35d08.appspot.com",messagingSenderId: "206347566463"};firebase.initializeApp(config);
const provider = new firebase.auth.GoogleAuthProvider();class App extends Component {
state = {user : []}onBtnLoginClick = () => {firebase.auth().signInWithPopup(provider).then((res) => {this.setState({user: res.user})}).catch((err) => {console.log(err)})}render() {return (<div><div style={{display : 'flex' , justifyContent:'center',marginTop:'300px'}}>{this.state.user.length == 0?<input type='button' value='login with google' onClick={this.onBtnLoginClick} />:<div><img src={this.state.user.photoURL } alt='broken' width="200px"/><p>{this.state.user.displayName}</p><input type='button' value='log out' onClick={this.onBtnLogoutClick} /></div>}</div></div>);}}export default App;
Kita bisa melihat semua isi response dari firebase dengan cara melihatnya di console.log .
Kelima, membuat function logout
gampang saja, di dalam function logout, kita panggil function dari firebase, untuk kemudian kita ubah state user yang tadinya isi, menjadi array kosong lagi.
Kenapa mesti kita ubah? agar komponen kita bisa re-render dengan array kosong, sehingga akan kembali ke tampilan awal dimana hanya ada button login with google
perhatikan code yang sudah saya bold di bawah ini
import React, { Component } from 'react';
import firebase from 'firebase'import './App.css';var config = {apiKey: "AIzaSyAxcsrM3GwgtOMP0lMdHm-y2y1i98A-_zc",authDomain: "login-with-35d08.firebaseapp.com",databaseURL: "https://login-with-35d08.firebaseio.com",projectId: "login-with-35d08",storageBucket: "login-with-35d08.appspot.com",messagingSenderId: "206347566463"};firebase.initializeApp(config);
const provider = new firebase.auth.GoogleAuthProvider();class App extends Component {
state = {user : []}onBtnLoginClick = () => {firebase.auth().signInWithPopup(provider).then((res) => {this.setState({user: res.user})}).catch((err) => {console.log(err)})}onBtnLogoutClick = () =>{firebase.auth().signOut().then((res) => this.setState({user : []})).catch((err) => console.log(err))}render() {return (<div><div style={{display : 'flex' , justifyContent:'center',marginTop:'300px'}}>{this.state.user.length == 0?<input type='button' value='login with google' onClick={this.onBtnLoginClick} />:<div><img src={this.state.user.photoURL } alt='broken' width="200px"/><p>{this.state.user.displayName}</p><input type='button' value='log out' onClick={this.onBtnLogoutClick} /></div>}</div></div>);}}export default App;
Kita sudah berhasil membuat login with google, dimana nantinya data yang sudah berhasil kita dapatkan bisa kita manipulasi sedemikian rupa, seperti kita mengirim ke database, atau kita taruh di dalam global state redux, atau kita oper ke props, dan lain sebagainya.
Comments
Post a Comment