我使用aws amplify和react-native-inappbrowser。我启用了谷歌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返回正确的令牌,但awsHub
捕获SIGN_IN_FAILURE
和data
看起来像这样:
{
"channel": "auth",
"payload": {
"event": "signIn_failure",
"data": {},
"message": "The OAuth response flow failed"
},
"source": "Auth",
"patternInfo": []
}
我不知道为什么会发生这种情况。一个解决方案可能是在GitHub认证的情况下删除侦听器,但我不确定如何做到这一点,因为InAppBrowser.openAuth()
用于谷歌SSO和GitHub认证。
如果我提供的信息不够,一定要让我知道。任何建议/帮助都会很好!
我认为AWS Amplify不支持github oauth。我相信受支持的有:Google, Apple, Facebook &亚马逊
支持的社交登录