在Cognito中处理登录地图

时间:2016-07-14 20:59:28

标签: amazon-web-services amazon-cognito

我使用的是AWS登录示例,但我遇到了问题。

https://github.com/awslabs/aws-sdk-android-samples/tree/master/CognitoSyncDemo

登录后,我使用setLogins方法保存(Developer Authenticatiion)登录凭据。

/ **      *设置登录名,以便您可以使用授权身份。这需要一个      *网络请求,所以你应该在后台线程中调用它。      *      * @param providerName外部身份提供者的名称      * @param令牌openId令牌      * /     public static void addLogins(String providerName,String token){         if(syncClient == null){             抛出新的IllegalStateException(" CognitoSyncClientManager尚未初始化");         }

    Map<String, String> logins = credentialsProvider.getLogins();
    if (logins == null) {
        logins = new HashMap<String, String>();
    }
    logins.put(providerName, token);
    credentialsProvider.setLogins(logins);
}

但是,此信息不会保留在示例中。因此,如果我关闭并打开我的应用程序应用程序,则credentialsProvider.getLogins()将为空。

AWS示例未持久保存登录地图。这有什么问题吗?没有登录地图上的任何信息,我收到了错误

com.amazonaws.services.cognitoidentity.model.NotAuthorizedException:未经身份验证的访问

1 个答案:

答案 0 :(得分:1)

目前上述示例并未涵盖从外部IdP管理和刷新令牌的部分(例如:Facebook,谷歌,推特等),但显示了如何从IdP获取第一个令牌以及使用Cognito的示例一旦在登录映射中填充了有效令牌。登录映射中的值通常是外部IdP提供的短期令牌,如果过期则需要更新。通常,IdP提供长期刷新令牌,该令牌可以被缓存并且可以用于获取短期令牌,但是该逻辑特定于IdP的类型。