【发布时间】:2023-01-14 06:17:00
【问题描述】:
我正在使用 aws amplify 和 react-native-inappbrowser。我启用了 Google SSO 身份验证并且它工作正常,但是当我添加 GitHub 身份验证时它没有按预期工作。
我使用 Hub.listen('auth', async (data) => {...} 添加了一个监听器,awsConfig 中的 urlOpener 看起来像这样:
onst urlOpener = async (url, redirectUrl, settings) => {
try {
if (await InAppBrowser.isAvailable()) {
const { type, url: newUrl } = await InAppBrowser.openAuth(
url,
redirectUrl,
{ ...inAppBrowserSettings, ...settings },
);
if (type === 'success') {
Linking.openURL(newUrl);
}
} else {
Linking.openURL(url);
}
} catch (error) {
Alert.alert(error.message);
}
};
Hub.listener 看起来像这样:
useEffect(() => {
const unsubscribe = Hub.listen('auth', async (data) => {
const { payload } = data;
const user = payload.data;
switch (payload.event) {
case AuthEnum.SIGN_IN:
handleSignIn(user);
break;
case AuthEnum.SIGN_OUT:
handleSignOut();
break;
case AuthEnum.SIGN_IN_FAILURE:
handleSignInFailure();
break;
}
});
return () => unsubscribe();
}, []);
当我尝试使用 GitHub 进行身份验证时,GitHub API 返回正确的令牌,但 aws Hub 捕获 SIGN_IN_FAILURE 和 data 如下所示:
{
"channel": "auth",
"payload": {
"event": "signIn_failure",
"data": {},
"message": "The OAuth response flow failed"
},
"source": "Auth",
"patternInfo": []
}
我不确定为什么会这样。解决方案可能是在 GitHub 身份验证的情况下删除侦听器,但我不确定该怎么做,因为 InAppBrowser.openAuth() 用于 Google SSO 和 GitHub 身份验证。
如果我提供的信息不够,请务必告诉我。任何建议/帮助都会很棒!
【问题讨论】:
标签: react-native aws-amplify deep-linking react-native-linking react-native-inappbrowser-reborn