如何注销 AWS Cognito 联合身份会话?

She*_*ims 10 federated-identity amazon-cognito expo

通过用户名和密码或使用“aws-amplify”中的 { Auth } 联合身份可以轻松登录 AWS Cognito 会话

Auth.signIn({ username: email, password: password})
Run Code Online (Sandbox Code Playgroud)

或者

Auth.federatedSignIn({ provider: 'Google' }); // or 'SignInWithApple' || 'Facebook'
Run Code Online (Sandbox Code Playgroud)

通过以下方式可以轻松退出 Cognito 会话

Auth.signOut();
Run Code Online (Sandbox Code Playgroud)

可能值得注意的是,我们使用 expo-web-browser 来启动应用内浏览器会话,而不是定向到外部 safari/chrome 窗口。

问题是 Auth.signOut() 调用不会撤销 Google/Apple/Facebook 会话中的令牌,因此每当Auth.federatedSignIn({ provider: 'Google' });再次调用时,用户已经登录。

这是次优的,因为这意味着如果用户通过 Google / Facebook / Apple 登录,他们将无法使用不同的 Google / Facebook / Apple 帐户登录。它还使得调试联合提供商首次登录时发生的问题变得非常困难,因为它不允许测试人员更改帐户。

有没有人在最新版本的 Expo 中找到有效的解决方案?(截至撰写本文时为 35)

这是一个类似的问题,没有答案并且没有提供很多背景信息

本文档建议致电

GET https://mydomain.auth.{region}.amazoncognito.com/logout?
client_id={CLIENT_ID}&
logout_uri=https://myclient/logout
Run Code Online (Sandbox Code Playgroud)

但我在调用时没有在我的应用程序中使用此方法

fetch('https://{MY_DOMAIN}.auth.us-west-2.amazoncognito.com/logout?client_id={CLIENT_ID}&redirect_uri=exp://127.0.0.1:19000&response_type=code', {
        method: 'GET',
        //Request Type
    })
Run Code Online (Sandbox Code Playgroud)

从我的注销按钮

这个线程提到他们正在考虑为 expo-web-browser 包添加一个清晰的 cookie,但看起来并没有通过代码审查。

值得注意的是,即使在开发服务器上运行expo r -c联合身份验证身份 cookie,您仍然可以在无需登录的情况下完成操作。

关于如何清除 Cognito 所查看的 Google/Facebook/Apple 联合登录会话有什么建议吗?