首页 > 解决方案 > 在 react native 中使用电子邮件和必需的属性电子邮件向 google 注册

问题描述

我进行自定义身份验证并尝试使用谷歌提供商实现身份验证。我收到一个错误:登录失败错误:invalid_request 我使用电子邮件,如用户名和属性电子邮件是必需的。如何解决这个问题?我设置了 google 凭据,使用 google 提供商进行了 aws update auth。

const AuthScreens = props => {
switch (props.authState) {
case 'signIn':
  return <SignIn {...props} />;
case 'signUp':
  return <SignUp {...props} />;
case 'forgotPassword':
  return <ForgotPassword {...props} />;
case 'confirmSignUp':
  return <ConfirmSigup {...props} />;
case 'changePassword':
  return <ChangePassword {...props} />;
case 'signedIn':
  return <HomeScreen />;
default:
  return <></>;
 }
};

function App(props) {
 const {googleSignIn} = props;
 const [user, setUser] = useState(null);

useEffect(() => {
Hub.listen('auth', ({payload: {event, data}}) => {
  switch (event) {
    case 'signIn':
    case 'cognitoHostedUI':
      getUser().then(userData => setUser(userData));
      break;
    case 'signOut':
      setUser(null);
      break;
    case 'signIn_failure':
    case 'cognitoHostedUI_failure':
      console.log('Sign in failure', data);
      break;
  }
  });

  getUser().then(userData => setUser(userData));
  }, []);

function getUser() {
return Auth.currentAuthenticatedUser()
  .then(userData => userData)
  .catch(() => console.log('Not signed in'));
}

return (
<SafeAreaView style={styles.container}>
  <Authenticator
    usernameAttributes="email"
    hideDefault={true}
    authState="signUp">
    <AuthScreens />
  </Authenticator>
  <TouchableOpacity onPress={googleSignIn}>
    <Text>Continue with Google</Text>
  </TouchableOpacity>
</SafeAreaView>
);
}

export default withOAuth(App);

标签: reactjsreact-nativeaws-amplify

解决方案


推荐阅读