React Native Firebase 身份验证 Displayname null
React Native Firebase Authentication Displayname null
我已经在我的移动应用程序中使用 firebase 创建了身份验证。用户注册时,我需要使用 updateProfile 方法提供 displayName。当用户注册时,它会自动转到主页。我想要我在主页上用 displayName 调用的名称,但它是空的。每当我刷新页面时,信息就来了。
注册方法
register: async (email, password, name, imageUri) => {
try {
return await auth()
.createUserWithEmailAndPassword(email, password)
.then( async (res) => {
const update = {
displayName: name,
photoURL:
imageUri,
};
await res.user.updateProfile(update)
})
} catch (e) {
console.log(e);
}
}
我的导航
const Routes = () => {
const {user, setUser} = useContext(AuthContext);
return (
<NavigationContainer>
{user ? <Tabs.Navigator>
<Tabs.Screen
name="Homepage"
component={Home}
options={{
title: 'Home Page',
headerShown: false,
tabBarIcon: props => <IconFeather name="home" {...props} />,
tabBarIconStyle: {fontWeight: '900'},
}}
/>
<Tabs.Screen
name="SecondPage"
component={SecondPage}
options={{
headerShown: false,
tabBarIcon: props => <IconFeather name="grid" {...props} />,
title: 'Second Page',
}}
/>
</Tabs.Navigator> : <AuthStack />}
</NavigationContainer>
);
};
export default Routes;
这就是我拉取数据的方式。
const Header = () => {
const {user} = useContext(AuthContext);
return (
<View style={{flexDirection: 'row', justifyContent: 'space-between', alignItems:'center'}}>
<View style={{maxWidth:'80%'}}>
<Text style={{fontSize: 24, fontWeight: '500'}}>Selam,</Text>
<Text style={{fontSize: 18, fontWeight: '500'}}>{user.displayName}</Text>
</View>
<View>
<Image
style={styles.tinyLogo}
source={{
uri: user.photoURL,
}}
/>
</View>
</View>
);
};
一刷新就有数据
推荐的方法是将用户 account-related 信息保存在数据库中。
async (email, password, name, imageUri) => {
try {
return await auth()
.createUserWithEmailAndPassword(email, password)
.then(async (res) => {
const userInfo = {
displayName: name,
photoURL: imageUri,
};
// Add user account information in Firestore to be retrieved later.
await firestore().collection("users").doc(res.user.uid).set(userInfo);
});
} catch (e) {
console.log(e);
}
};
我已经在我的移动应用程序中使用 firebase 创建了身份验证。用户注册时,我需要使用 updateProfile 方法提供 displayName。当用户注册时,它会自动转到主页。我想要我在主页上用 displayName 调用的名称,但它是空的。每当我刷新页面时,信息就来了。
注册方法
register: async (email, password, name, imageUri) => {
try {
return await auth()
.createUserWithEmailAndPassword(email, password)
.then( async (res) => {
const update = {
displayName: name,
photoURL:
imageUri,
};
await res.user.updateProfile(update)
})
} catch (e) {
console.log(e);
}
}
我的导航
const Routes = () => {
const {user, setUser} = useContext(AuthContext);
return (
<NavigationContainer>
{user ? <Tabs.Navigator>
<Tabs.Screen
name="Homepage"
component={Home}
options={{
title: 'Home Page',
headerShown: false,
tabBarIcon: props => <IconFeather name="home" {...props} />,
tabBarIconStyle: {fontWeight: '900'},
}}
/>
<Tabs.Screen
name="SecondPage"
component={SecondPage}
options={{
headerShown: false,
tabBarIcon: props => <IconFeather name="grid" {...props} />,
title: 'Second Page',
}}
/>
</Tabs.Navigator> : <AuthStack />}
</NavigationContainer>
);
};
export default Routes;
这就是我拉取数据的方式。
const Header = () => {
const {user} = useContext(AuthContext);
return (
<View style={{flexDirection: 'row', justifyContent: 'space-between', alignItems:'center'}}>
<View style={{maxWidth:'80%'}}>
<Text style={{fontSize: 24, fontWeight: '500'}}>Selam,</Text>
<Text style={{fontSize: 18, fontWeight: '500'}}>{user.displayName}</Text>
</View>
<View>
<Image
style={styles.tinyLogo}
source={{
uri: user.photoURL,
}}
/>
</View>
</View>
);
};
一刷新就有数据
推荐的方法是将用户 account-related 信息保存在数据库中。
async (email, password, name, imageUri) => {
try {
return await auth()
.createUserWithEmailAndPassword(email, password)
.then(async (res) => {
const userInfo = {
displayName: name,
photoURL: imageUri,
};
// Add user account information in Firestore to be retrieved later.
await firestore().collection("users").doc(res.user.uid).set(userInfo);
});
} catch (e) {
console.log(e);
}
};