我试图建立一个电子商务应用程序与博览会和React Native,但我面临着一个网络错误,谷歌服务是活跃的设备(模拟器的Android和真实的的iPhone的IOS),我连接到我的谷歌帐户.
我也试着阻止页面重新加载,但没有任何改变。经过一番研究,我看到的是我不是唯一一个面对这个错误,我没有找到任何有价值的答案,所以我在这里结束。
下面是我代码:
const LoginScreen = () => {
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [isSignedIn, setIsSignedIn] = useState(false);
const handleCreateAccount = (e) => {
e.preventDefault();
createUserWithEmailAndPassword(authentification, email, password)
.then((userCredential) => {
console.log(userCredential);
})
.catch((error) => {
console.log(error.message);
});
};
const handleSignIn = (e) => {
e.preventDefault();
signWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
console.log("Signed in!");
const user = userCredential.user;
console.log(user);
})
.catch((error) => {
console.log(error);
Alert.alert(error.message);
});
};
<ScrollView
contentContainerStyle={{
flex: 1,
width: "100%",
height: "100%",
alignItems: "center",
justifyContent: "center",
}}
>
<BlurView intensity={100}>
<View style={styles.login}>
<Image
source={{ uri: profilePicture }}
style={styles.profilePicture}
/>
<Text style={{ fontSize: 17, fontWeight: "400", color: "white" }}>
email
</Text>
<TextInput
onChangeText={(text) => setEmail(text)}
style={styles.input}
placeholder="your@email.com"
keyboardType="email-address"
textContentType="emailAddress"
/>
<Text style={{ fontSize: 17, fontWeight: "400", color: "white" }}>
mot de passe
</Text>
<TextInput
onChange={(text) => setPassword(text)}
style={styles.input}
placeholder="your password"
secureTextEntry={true}
/>
<Button
onPress={handleSignIn}
title="Connexion"
buttonStyle={{
width: 250,
height: 40,
borderRadius: 10,
backgroundColor: "#00CFEB90",
alignItems: "center",
justifyContent: "center",
marginVertical: 10,
borderColor: "#fff",
borderWidth: 2,
}}
type="outline"
titleStyle={{ color: "white", fontSize: 17 }}
/>
<Button
onPress={handleCreateAccount}
title="Créer un compte"
buttonStyle={{
width: 250,
height: 40,
borderRadius: 10,
backgroundColor: "#6792F090",
alignItems: "center",
justifyContent: "center",
marginVertical: 10,
borderColor: "#fff",
borderWidth: 2,
}}
type="outline"
titleStyle={{ color: "white", fontSize: 17 }}
/>
</View>
</BlurView>
</ScrollView>
所以我需要帮助。
4条答案
按热度按时间klh5stk11#
auth/network-request-failed
错误尤其容易引起误解,因为它似乎有很多不同的原因,我在以下任何一种情况下都见过它:1.SDK版本错误-要在本地设备上使用auth,您需要使用本地SDK,* 而不是 * JavaScript SDK。一些其他Firebase功能可以通过JS SDK工作,但auth不能,因为它有额外的安全层。请确保您使用的是正确的版本。
1.模拟器问题-您的模拟器无法访问Internet或DNS过时或系统时间不正确。请检查并确保您的设备可以访问Internet,设备上的时钟设置正确,并且项目的DNS可以解析。对于DNS,您可以尝试切换到Google的DNS(8.8.8.8)或Cloudflare的DNS(1.1.1.1),看看是否有帮助。
1.无Google Play服务-在Android上,身份验证要求在设备模拟器上安装Google Play服务。有关详细信息,请参阅此处。
1.Firebase设置不正确-确保您已遵循Expo和React Native Firebase入门说明中的每一项,特别是凭据部分,并确保Android上的软件包名称匹配,iOS上的软件包ID匹配。
如果以上方法都不起作用,请提供您得到的完整错误(检查React错误和设备级错误日志)。
avkwfej42#
**以防它帮助某人。**我遇到了同样的问题,花了很多时间进行调查。事实证明,在我的情况下,这只是firebase层中的DNS问题。模拟器URL中的
localhost
没有解决。我将其替换为127.0.0.1
,它工作正常。mznpcxlj3#
这有助于避免错误:
auth/network-request-failed
,同时使用iOS模拟器。如果您遵循文档并在调试模式下实现FirebaseAuth的模拟。https://firebase.google.com/docs/emulator-suite/
设置模拟器,然后运行:
我应该在那之后工作,你可以在http://localhost:4000/auth上管理用户。
rhfm7lfc4#
我在iOS模拟器上遇到了这个错误,对我来说,解决方案是通过运行
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
在我的Mac上闪存DNS希望这能帮助到一些人