![](/img/trans.png)
[英]AWS / iOS / Cognito: unauthenticated access is not supported for this identity pool
[英]AWS Cognito iOS. Unauthenticated error after logout
我正在使用AWS Cognito,通过MobileHub与iOS应用集成,通过Facebook登录。 一切正常,直到我注销现有身份并尝试使用另一个FB帐户登录(或者甚至使用相同的帐户)。
在这种情况下,每当我调用任何AWS Lambda时,我都会收到此错误:
AWSiOSSDK v2.4.9 [错误] AWSCredentialsProvider.m行:577。
[AWSCognitoCredentialsProvider凭证]。
无法刷新。 错误是[错误域= com.amazonaws.AWSCognitoIdentityErrorDomain Code = 8“(null)”UserInfo = {__ type = NotAuthorizedException,message =此身份池不支持未经身份验证的访问。}]
但是,如果我终止并重新启动应用程序,一切正常。
此错误源自此处 :
从阅读AWS SDK代码,我看,这是因为cognito身份没有得到来自凭据提供登录这里 :
我想这是预期的,因为我已经退出了。 但问题是即使登录到FB AWS后仍然认为我未经授权。 从我在StackOverflow上的类似问题看,过去人们手动在AWSCognitoCredentialsProvider上设置了登录字典。 但现在这个属性已被弃用,其他类似的属性也是只读的。
这是我在AppDelegate中的AWS设置didFinishLaunchingWithOptions方法:
let cred = AWSCognitoCredentialsProvider(regionType: .euWest1, identityPoolId: "POOLID")
let config = AWSServiceConfiguration(region: .euWest1, credentialsProvider: cred)
AWSServiceManager.default().defaultServiceConfiguration = config
if let config = config {
config.timeoutIntervalForRequest = 30
config.timeoutIntervalForResource = 30
config.maxRetryCount = 3
AWSLambdaInvoker.register(with: config, forKey: "key")
}
let mapperConfiguration = AWSDynamoDBObjectMapperConfiguration()
mapperConfiguration.saveBehavior = .updateSkipNullAttributes
AWSDynamoDBObjectMapper.register(with: config!, objectMapperConfiguration: mapperConfiguration, forKey: "updateObjectMapper")
这是注销码:
AWSIdentityManager.defaultIdentityManager().logout { (result, error) in
if let cp = AWSServiceManager.default().defaultServiceConfiguration.credentialsProvider as? AWSCognitoCredentialsProvider {
cp.clearKeychain()
}
// Open login screen
}
请注意,我尝试清除钥匙串而不是这样做。 结果是一样的。
我真的很感激任何帮助!
最好的问候,Alex
你是在执行登录方法吗?
- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins {
FBSDKAccessToken* fbToken = [FBSDKAccessToken currentAccessToken];
if(fbToken){
NSString *token = fbToken.tokenString;
return [AWSTask taskWithResult: @{ AWSIdentityProviderFacebook : token }];
}else{
return [AWSTask taskWithError:[NSError errorWithDomain:@"Facebook Login"
code:-1
userInfo:@{@"error":@"No current Facebook access token"}]];
}
}
更多细节 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.