I am using firebae auth to log in and sign up for my react app. I can get sign up working but I am having issues with log in. I followed the https://firebase.google.com/docs/reference/rest/auth#section-sign-in-email-password for the api link. I followed the same code for log in than I did for sign up but I keep getting issues with it.
This is the error message i get when i try to log in.
Object {
"error": Object {
"code": 400,
"errors": Array [
Object {
"domain": "global",
"message": "MISSING_REQUEST_URI",
"reason": "invalid",
},
],
"message": "MISSING_REQUEST_URI",
},
}
This is my user action page for my app for log in.
export const login = (email, password) => {
return async dispatch => {
const response = await fetch('https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp?key=[API]', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ //javascript to json
//key value pairs of data you want to send to server
// ...
email: email,
password: password,
returnSecureToken: true
})
});
// console.log(await response.json());
const data = await response.json(); // json to javascript
console.log(data);
if (!response.ok) {
Alert.alert("There was a issue with logging in ")
} else {
await SecureStore.setItemAsync('email', data.email);
await SecureStore.setItemAsync('token', data.idToken);
dispatch({ type: SIGNUP, payload: { email: data.email, idToken: data.idToken } })
}
};
}
This is my user action page for my app for sign in.
export const signup = (email, password) => {
return async dispatch => {
const response = await fetch('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=[API]', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ //javascript to json
//key value pairs of data you want to send to server
// ...
email: email,
password: password,
returnSecureToken: true
})
});
// console.log(await response.json());
const data = await response.json(); // json to javascript
console.log(data);
if (!response.ok) {
Alert.alert("There was a issue with signing in ")
} else {
await SecureStore.setItemAsync('email', data.email);
await SecureStore.setItemAsync('token', data.idToken);
dispatch({ type: SIGNUP, payload: { email: data.email, idToken: data.idToken } })
}
};
};
Then this is my log in screen.
const LoginScreen = ({ navigation }) => {
const [email, setEmail] = useState('')
const [password, setPassword] = useState('')
const dispatch = useDispatch()
async function load() {
let emailFromSecureStore = await SecureStore.getItemAsync('email');
let tokenFromSecureStore = await SecureStore.getItemAsync('token');
if (emailFromSecureStore && tokenFromSecureStore) {
console.log("success", emailFromSecureStore);
// dispatch(restoreUser(emailFromSecureStore, tokenFromSecureStore));
} else {
console.log("failure");
}
}
useEffect(() => {
load(); // uncomment to read from secure store
}, [])
return (
<View style={styles.ViewStyle}>
<TextInput placeholder='Email'
onChangeText={setEmail}
value={email}
style={styles.loginText}/>
<TextInput placeholder='Password'
onChangeText={setPassword}
value={password}
style={styles.loginText}/>
<View style={styles.gap}>
</View>
<Pressable style={styles.buttonStyle} onPress={() => dispatch(login(email, password))}>
<Text style={styles.text}>Log in</Text>
</Pressable>
</View>
);
}