前置き
既に作成されたSNSアカウントで
ログインできるって便利ですよね✨🚲
今回はFacebookでログインしてみましょう🙋♀️
メールアドレスログインと
要領は同じです!
コードもこちらに付け足します✍️
ということで
firebaseAuthを使います💡
Step1: FBアプリの作成
外部のアカウントでログインするため
もろもろ必要になります🌟
Facebookサインインについてはこちら👀
Before you begin
1は済んでいるので2から始めましょう!
Facebook for Developers
ここでアプリを作成し
App IDとApp secretを確認していきます💡
1. まずはFBアカウントでログイン
2. マイアプリをクリック
(ログインの文字がマイアプリに変わってます)
3. 新しいアプリを作成
4. アプリ名を入力
「アプリIDを作成してください」をクリック
セキュリティチェックが通ればアプリが作成されます🌟
Step2: FBアプリの連携
1.App IDとApp secretを確認
アプリが作成されると
そのままアプリのダッシュボードへ行きます。
サイドメニュー 設定 > ベーシック
2. firebaseに貼り付ける
firebaseのプロジェクトサイドメニューAuthentication
> Sign-in method > Facebook
> App ID とApp secretをペースト
3. OAuth リダイレクト URIをコピー
App ID と App secretの下にあります🌟
Step3: OAuthリダイレクトURIの設定
1. Facebookログインの設定
製品を追加 > Facebookログイン > 設定
2. 設定に移る
クイックスタートの画面に飛びますが
サイドメニューの設定をクリックします!
3. 有効なOAuthリダイレクトURIを入力
ここにfirebaseでコピーしたURIを貼り付けます!
これで設定は完了です🤗✨
Step4: コードを追加
Handle the sign-in flow with the Firebase SDK
解説
store/index.js
必須項目:1, 5
Optional:2, 3, 4
ということで必須項目だけ
Vuexにコピペしていきます。
- actions loginFacebookを作成
ログインできたら
ログイン状態をtrueにしたいので
それを行うcheckLoginをdispatchで呼ぶ - 不要な物を削除
コメント
セミコロン(;)
var token
var user
コード
) file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import firebase from '~/plugins/firebase' export const state = () => ({ user: { uid: '', email: '', login: false, }, }) export const getters = { user: state => { return state.user } } export const actions = { login({ dispatch }, payload) { firebase.auth().signInWithEmailAndPassword(payload.email, payload.password) .then(user => { console.log('成功!') dispatch('checkLogin') $router.push('/') }).catch((error) => { alert(error) }) }, loginFacebook ({ dispatch }) { var provider = new firebase.auth.FacebookAuthProvider() firebase.auth().signInWithPopup(provider).then(function (result) { dispatch('checkLogin') }).catch(function (error) { console.log(error) }) }, checkLogin ({ commit }) { firebase.auth().onAuthStateChanged(function (user) { if (user) { commit('getData', { uid: user.uid, email: user.email }) commit('switchLogin') } }) }, } export const mutations = { getData (state, payload) { state.user.uid = payload.uid state.user.email = payload.email }, switchLogin (state) { state.user.login = true }, } |
) pages
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
<template> <div class="login"> <p v-if="user.login" class="text" > {{ user }} </p> <form v-else class="form" @submit.prevent > <label class="label"> <span class="label"> email </span> <input class="input" type="text" v-model="email" > </label> <label class="label"> <span class="label"> password </span> <input class="input" type="password" v-model="password" > </label> <button class="button" type="submit" @click="login" > Login </button> <button class="button" type="submit" @click="loginFacebook" > facebookでログイン </button> </form> </div> </template> <script> export default { computed: { user () { return this.$store.getters['user'] }, }, data () { return { email: '', password: '', } }, methods : { login (email, password) { this.$store.dispatch('login', {email: this.email, password: this.password}) }, loginFacebook () { this.$store.dispatch('loginFacebook') }, } } </script> |
) pages
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<template> <div class="page"> <p v-if="user.login" class="text" > ログインに成功! </p> </div> </template> <script> export default { computed: { user () { return this.$store.getters['user'] }, }, } </script> |
ログインはこれだけです🌟
意外とシンプルですよね!
アカウント作成や、
ログアウトの仕方はまた別記事にて♪