これまでのところ、私は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
機能は?
は、あなたが@soutotありがとうはそのリスナーに似ていますか?だから私は、アプリケーションを終了するたびに、認証状態が変更されますか?それでアプリを再び開いたらどうなりますか?自動的にログインしますか? –
はい、Firebaseは認証ユーザーをローカルに格納します。ログアウトするだけでなく、アプリデータをアンインストールまたはクリーニングすると、アプリを開くたびにあなたが認証ユーザーとして認識されます。 – soutot
ありがとうございます。しかし最後の質問です:ユーザのホームページに移動したときに、ヘッダにユーザの名前が表示されると、これは 'componentWillMount()'メソッドでユーザの情報を取得する必要があることを意味します。 'const {currentUser} = firebase.auth() '現在ログインしているユーザーの情報を取得しますか?もしそうなら、私はredux-persistを使用してユーザーのデータを正しく保持する必要はありませんか? –