plugins/firebase.js
import firebase from "firebase";
if (!firebase.apps.length) {
const firebaseConfig = {
apiKey: "<apiKey>",
authDomain: "<authDomain>",
databaseURL: "<databaseURL>",
projectId: "<projectId>",
storageBucket: "<storageBucket>",
messagingSenderId: "<messagingSenderId>",
appId: "<appId>",
measurementId: "<measurementId>"
};
firebase.initializeApp(firebaseConfig);
}
export default firebase;
/pages/login.vue
<template>
<div>
<button type="button" @click="signIn()" class="btn btn-primary">Sign in with Google</button>
<div><router-link to="/mypage" >マイページ</router-link></div>
</div>
</template>
<script>
import firebase from "@/plugins/firebase";
export default {
created: function() {
const user = firebase.auth().currentUser;
console.log('user', user);
if (user) {
this.$router.push('/mypage');
}
},
methods: {
signIn() {
const provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then((result) => {
console.log('result', result);
this.$router.push('/mypage');
}).catch((error) => {
console.error(error.code);
});
}
}
}
</script>
pages/mypage.vue
<template>
<div>
<div>{{email}}</div>
<button type="button" @click="signOut()" class="btn btn-primary">ログアウト</button>
<div><router-link to="/login" >ログイン画面</router-link></div>
</div>
</template>
<script>
import firebase from "@/plugins/firebase";
export default {
data: function() {
return { email: null };
},
created: function() {
const user = firebase.auth().currentUser;
console.log('user', user);
if (user) {
this.email = user.email;
} else {
this.$router.push('/login');
}
},
methods: {
async signOut(){
await firebase.auth().signOut();
this.$router.push('/login');
},
}
}
</script>