Javascript React Native:AWS amplify要求我点击“federatedSignIn”两次,谷歌才能成功
我的应用程序要求在用户实际登录之前,在iOS设备上点击两次google oauth(通过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上,它似乎能按预期工作。另一件奇怪的事情是,它在所有设备上都能像预期的那样与苹果公司合作 想知道是否还有其他人遇到过这个问题,你
federatedSignIn
)
过程:
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);