Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AWS Cognito和Google Signin在1小时后失败_Android_Amazon Web Services_Google Signin_Amazon Cognito - Fatal编程技术网

Android AWS Cognito和Google Signin在1小时后失败

Android AWS Cognito和Google Signin在1小时后失败,android,amazon-web-services,google-signin,amazon-cognito,Android,Amazon Web Services,Google Signin,Amazon Cognito,我面临着谷歌登录的问题,这让我怀疑Cognito是否可以在这种配置下工作 基本上,谷歌代币的使用寿命为1小时。 这是为了让您能够访问Google API一小时,然后您应该续订令牌 问题是Cognito使用这个令牌的寿命相同。因此,这意味着一小时后Cognito Sync停止工作(我还没有找到一种方法来静默地刷新令牌,甚至检查它是否过期) 困扰我的是,我不想访问GoogkeAPI,我只想用AWS Cognito Sync刷新我的数据集,因为Google令牌,它不允许我访问。这真的没有道理 我甚至不

我面临着谷歌登录的问题,这让我怀疑Cognito是否可以在这种配置下工作

基本上,谷歌代币的使用寿命为1小时。 这是为了让您能够访问Google API一小时,然后您应该续订令牌

问题是Cognito使用这个令牌的寿命相同。因此,这意味着一小时后Cognito Sync停止工作(我还没有找到一种方法来静默地刷新令牌,甚至检查它是否过期)

困扰我的是,我不想访问GoogkeAPI,我只想用AWS Cognito Sync刷新我的数据集,因为Google令牌,它不允许我访问。这真的没有道理

我甚至不想去想它在糟糕的网络条件下会有多糟(令牌已过期,无法刷新,因为用户没有连接…用户被可用的应用程序卡住…用户非常不高兴…)

我想知道为什么没有使用服务器端令牌实现这一点(如中所示)。 我们将从Google获得认证代码,然后Cognito服务器将处理令牌本身

我仍然希望我做错了什么,希望它完美无缺,但我尝试的东西已经用光了

任何提示欢迎,提前谢谢


JM

即使您没有连接,Cognito Sync也会在本地存储数据,并在网络连接可用时进行同步。这将防止由于网络问题而导致的任何数据丢失


关于谷歌代币,是的,当设备上当前的AWS凭据过期时,您必须刷新它们并给Cognito一个新的。

实际上,我认为是AWS凭据过期,而不是谷歌凭据过期。。。然而,对于开发人员必须为Cognito Sync处理这些问题,我感到困惑。Rachit,我想我已经开始理解正在发生的事情了。。。因此,基本上我们需要在任何同步尝试之前查询credentialsProvider.getSessionRedentitalSexpiration()。那么dataset.synchronizeOnConnectivity()呢。当我们调用此方法时,会话可能不会过期,但当连接恢复时,会话可能会过期(用例可能大部分处于脱机状态)。谢谢杰姆诺普。我被困住了,似乎我不是唯一一个(AWS Cognito论坛上也有一些类似的问题)。这并不能解决问题,但至少我没有发疯。我已经在Github上创建了一个展示该问题的最小应用程序。非常欢迎您来修复它。@jmc34您找到解决方法了吗?我也遇到了类似的情况。@user3486992,基本上Cognito的缺点是它不会自动管理ID提供者的令牌刷新(正如您所期望的那样)。因此,您必须检查您的Cognito令牌是否过期,如果过期,您需要首先从您的ID提供者处获取一个新令牌,然后处理Cognito以刷新Cognito令牌。我本来希望这里能有更多的自动化,但这是不可能的。您可以在这里查看我在哪里放置了一个功能示例。忽略README.md,它是在我找到解决方案之前编写的。