2017-09-08 15 views
0

これまでのところ、私はreduxを使ってログイン状態をグローバルに維持しています。 、減速ファイルで、その後ログインしたかどうかを確認するには、firebaseを使用してネイティブに反応しますか?

// In auth_action file 
    export const accountLogin = ({ email, password }) => { 
     firebase.auth().signInWithEmailAndPassword(email, password) 
     .then(user => { 
      dispatch({ type: LOGIN_SUCCESS, payload: user })}); 
     }); 
    }; 

:私はそうのようにユーザーをログに記録するアクションの作成者を使用しています、私のログイン画面では、...

// In LoginScreen file 
    onLogin =() => { 
     this.props.accountLogin({ email, password }); 
    } 

とアクションファイルで、accountLoginは次のように定義されケースLOGIN_SUCCESSがそうのように扱われる...

// In auth_reducer file 
    const INITIAL_STATE = { 
     // ... Other stuff 
     user: null 
    }; 
    export default function (state = INITIAL_STATE, action) { 
     // ... Other cases 
     // Login Successful case 
     case LOGIN_SUCCESS: 
     return { ...state, user: action.payload }; 
     // After this return statement, I now have user's profile info 
    }; 

だから私の質問は、次回のユーザーがアプリを開くように私は、ユーザーのプロファイル情報を保持しますどのように、彼らは再ログインする必要はありませんか?私はいくつかの研究を行ってきたが、これは私が持っているものです。

// Use autoRehydrate and persistStore in 'redux-persist' 
    // In store file 
    import { createStore, compose, applyMiddleware } from 'redux'; 
    import thunk from 'redux-thunk'; 
    import { autoRehydrate, persistStore } from 'redux-persist'; 
    import { AsyncStorage } from 'react-native'; 
    import reducers from '../reducers'; 

    const store = createStore(
     reducers, 
     {}, 
     compose(
     applyMiddleware(thunk), 
     autoRehydrate() 
    ) 
    ); 

    persistStore(store, { storage: AsyncStorage, whitelist: ['auth'] }); 

    export default store; 

そしてもちろん、私は私のauth_reducerファイルにREHYDRATEケースを処理しました。しかし、それでも、ユーザーがアプリケーションを再オープンした後、ユーザーが前回使用したときのユーザー情報があります。この情報をFirebaseデータベースのデータの変更を続けるためにどのように使用できますか?

たとえば、ユーザーがアプリケーションを再開して名前を変更する場合、firebaseはこれが承認されたユーザーであることをどのように知っていますか?これを書くにはchangeName機能は?

答えて

2

この方法は、あなたに役立ちます。

firebase.auth().onAuthStateChanged((user) => { 
     if (user) { 
     console.log('user logged') 
     } 
    }); 

詳細情報ここにあなたのcomponentWillMountでこれを設定します。https://firebase.google.com/docs/auth/

+0

は、あなたが@soutotありがとうはそのリスナーに似ていますか?だから私は、アプリケーションを終了するたびに、認証状態が変更されますか?それでアプリを再び開いたらどうなりますか?自動的にログインしますか? –

+1

はい、Firebaseは認証ユーザーをローカルに格納します。ログアウトするだけでなく、アプリデータをアンインストールまたはクリーニングすると、アプリを開くたびにあなたが認証ユーザーとして認識されます。 – soutot

+0

ありがとうございます。しかし最後の質問です:ユーザのホームページに移動したときに、ヘッダにユーザの名前が表示されると、これは 'componentWillMount()'メソッドでユーザの情報を取得する必要があることを意味します。 'const {currentUser} = firebase.auth() '現在ログインしているユーザーの情報を取得しますか?もしそうなら、私はredux-persistを使用してユーザーのデータを正しく保持する必要はありませんか? –

関連する問題