Javascript React Native:AWS amplify要求我点击“federatedSignIn”两次,谷歌才能成功

Javascript React Native:AWS amplify要求我点击“federatedSignIn”两次,谷歌才能成功,javascript,android,ios,react-native,aws-amplify,Javascript,Android,Ios,React Native,Aws Amplify,我的应用程序要求在用户实际登录之前,在iOS设备上点击两次google oauth(通过federatedSignIn) 过程: 第一次点击时,inapp浏览器打开,您可以选择要登录的帐户。Inapp浏览器关闭,似乎我所有的逻辑都没有被点击 在第二次点击时,inapp浏览器会在一瞬间再次打开(屏幕为空白),然后关闭,然后用户实际登录 然而,在iOS模拟器/android上,它似乎能按预期工作。另一件奇怪的事情是,它在所有设备上都能像预期的那样与苹果公司合作 想知道是否还有其他人遇到过这个问题,你

我的应用程序要求在用户实际登录之前,在iOS设备上点击两次google oauth(通过
federatedSignIn

过程:

  • 第一次点击时,inapp浏览器打开,您可以选择要登录的帐户。Inapp浏览器关闭,似乎我所有的逻辑都没有被点击
  • 在第二次点击时,inapp浏览器会在一瞬间再次打开(屏幕为空白),然后关闭,然后用户实际登录
  • 然而,在iOS模拟器/android上,它似乎能按预期工作。另一件奇怪的事情是,它在所有设备上都能像预期的那样与苹果公司合作

    想知道是否还有其他人遇到过这个问题,你们是否都有建议

    在这里,我实例化了集线器侦听器:

      useEffect(() => {
        // NOTE: amplify hub listener
        const listener = async (data: any) => {
          switch (data.payload.event) {
            case "signIn":
            case "cognitoHostedUI":
              await signInUser();
              break;
            case "signOut":
              setUser(null);
              break;
            default:
              break;
          }
        };
    
        Hub.listen("auth", listener);
      }, []);
    
    我的google oauth按钮组件:

    export function GoogleSignInButton({ title }: GoogleSignInButtonProps) {
      return (
        <SocialIcon
          button
          type="google"
          title={title}
          style={{ padding: 50, marginBottom: 10 }}
          onPress={() =>
            Auth.federatedSignIn({
              provider: "Google" as any,
            }).catch(federatedSignInError => {
              console.log({ federatedSignInError });
              throw new Error(federatedSignInError);
            })
          }
        />
      );
    }
    
    async function urlOpener(url: string, redirectUrl: string) {
      await InAppBrowser.isAvailable();
      const { type, url: newUrl } = (await InAppBrowser.openAuth(url, redirectUrl, {
        showTitle: false,
        enableUrlBarHiding: true,
        enableDefaultShare: false,
        ephemeralWebSession: false,
    
      })) as RedirectResult;
    
      if (type === "success") {
        Linking.openURL(newUrl);
      }
    }
    
    const appsyncAuthenticationTypeOverride = {
      ...config,
      oauth: {
        ...config.oauth,
        urlOpener,
      },
      aws_appsync_authenticationType: "AWS_IAM",
    };
    
    Amplify.configure(appsyncAuthenticationTypeOverride);