【问题标题】:AWS Cognito: how to delete an identity programmatically?AWS Cognito:如何以编程方式删除身份?
【发布时间】:2019-12-06 13:40:53
【问题描述】:

在我的 Android 应用程序中,我使用 AWS Cognito 允许我的用户注册和登录。我配置了我的身份池,因此它允许来宾用户(未经身份验证的用户)在我的应用中使用。

所以每次我的用户登录或注销时,我都会调用以下代码来获取身份 ID:

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
    this,
    "eu-central-1:12345678-1234-5678-9012-1234567890ab",
    "eu-central-1");
credentialsProvider.clearCredentials();
credentialsProvider.getIdentityId();

当我的用户登录时,它第一次创建一个新身份,然后用户每次登录时都会获得相同的身份。但每次他注销时,都会创建一个新身份,因为他现在是“访客”用户.

这是预期的行为吗?如果是,我如何以编程方式删除未使用的身份(例如,当用户登录时,因此“访客”身份现在无用,因为在他注销时将创建一个新身份)?

感谢您的帮助。

【问题讨论】:

    标签: android aws-sdk amazon-cognito


    【解决方案1】:

    从文档中,我们有:

    getIdentityId() 获取用户的 Cognito 身份 ID。第一次调用此方法时,将发出网络请求以检索新的身份标识。之后它保存在 SharedPreferences 中。

    clearCredentials() 销毁所有已保存的 AWS 凭证,但不销毁身份 ID。

    所以,根据文档,您描述的行为是完全正常的。

    现在,让我们找到解决问题的方法。

    如果您想继续您的提议,并在注销后以编程方式删除身份,您可以使用 AWSJavaSDK 中的deleteUser() 方法。

    但是,如果您想在注销后为同一用户保留相同的身份,则不应清除缓存,因为不会保留用户身份的任何痕迹。

    我希望这会有所帮助。

    【讨论】:

    • 谢谢,但问题是 deleteUser() 只删除用户,而不是关联的身份。还有,注销后保持相同的身份正常吗?
    • 是的,实际上你是对的。该函数在参数中需要 accessToken ,因此您将无法调用它,因为我猜您无法为未经授权的用户获取令牌。关于您的问题,我认为为同一个未经授权的用户保持相同的身份是可以的,这将有助于您以后做一些事情(统计、UX、..)
    • 看起来您可以使用 AWS.CognitoIdentity.deleteIdentities() 从 lambda 执行此操作。不过还没有测试。
    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 2013-01-29
    • 2014-10-04
    • 2016-10-02
    • 1970-01-01
    • 2019-02-23
    • 2018-01-29
    • 1970-01-01
    相关资源
    最近更新 更多