AWS Amplify 联合 google 登录在浏览器上正常工作,但在 Android 上不起作用

AWS Amplify federated google login work properly on browser but dont work on Android

问题是当我在浏览器上尝试 运行 借助 amplify auth 方法进行联合身份验证时它工作正常,但是当我尝试 运行 它在我的手机上时。

当我尝试使用 Auth.currentSession() 时抛出错误 No user found 但在浏览器上同样有​​效。

尝试搜索此类问题,但我发现 ionic-cordova-google-plugin 与 AWS Amplify 联合登录问题无关。

在不询问任何信息的情况下使用较少的调试信息关闭问题后更新问题。

这是 git 中心针对我的问题提出的问题。

  1. Issue 5351 amplify js目前还处于打开状态

https://github.com/aws-amplify/amplify-js/issues/5351

  1. 另一个 issue 3537 还在 Open

这两个issue和我一样的场景,希望调试信息够多,如果更需要提意见,而不是不通知关闭,欺负初学者没有帮助

我通过引用评论或环绕修复解决了上述问题。

Link 将直接转至该评论 link to comment

  • 首先阅读上面的评论,因为它会让您全面了解问题到底是什么,而不是直接跳到解决方案。
  • 一旦你阅读了评论,你就会对实现有点不清楚,因为他使用了电容器,而不是每个人都在使用电容器。

在我的实现中,我忽略了这部分,因为我没有使用电容器。

App.addListener('appUrlOpen')
  • 现在让我们转到解决此问题的主要步骤,我正在使用深层链接重定向到我的应用程序
this.platform.ready().then(() => {
      this.deeplinks
        .route({
          "/success.html": "success",
          "/logout.html": "logout",
        })
        .subscribe(
          (match: any) => {
            const fragment = JSON.stringify(match).split('"fragment":"')[1];
             // this link can be your any link based on your requirement, 
             // what I am doing it I am passing all the data which I get in my fragments.
             // fragments consists of id_token, stage, code,response type.
             // These need to be passed to Ionic in order for Amplify to run its magic.
            document.location.href = `http://192.168.1.162:8100/#${fragment}`;
          },
          (nomatch) => {
            console.log("Got a deeplink that didn't match", nomatch);
          }
        );
    });

我通过参考开发人员提到的发送代码和状态以及应用程序深度链接的问题得到了这个想法URL。