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