0

私はFacebook経由でログインするためにMobileHubを通じてiOSアプリと統合されたAWS Cognitoを使用しています。 既存のIDをログアウトして別のFBアカウントでログインしようとするまでは、すべて正常に動作します。私はこのエラーを取得する。この場合
、私はどのAWSラムダ呼び出すたび:AWS Cognito iOS。ログアウト後の認証されていないエラー

AWSiOSSDKのv2.4.9 [エラー] AWSCredentialsProvider.mライン:577。
[AWSCognitoCredentialsProvider資格情報]。
更新できません。エラーは[エラードメイン= com.amazonaws.AWSCognitoIdentityErrorDomainコード= 8 "(ヌル)" のUserInfo = {__タイプ= NotAuthorizedException、メッセージ=非認証アクセスが、このアイデンティティ・プールのためにサポートされていない。}]

しかし、私が終了した場合とアプリを再起動すると、すべて正常に動作します。

このエラーがhere発信:

私が見るAWS SDKコードを読み取ることから、cognitoのアイデンティティは資格プロバイダhereからのログインを取得していないので、それが起こること:

私は「ので、私は、これが期待されていると思いますveはログアウトしました。しかし、問題はFBにログインした後でさえ、AWSはまだ私をUnauthorizedとみなすことです。 StackOverflowに関する同様の質問から、過去の人々はAWSCognitoCredentialsProviderでログイン辞書を手動で設定していたことがわかります。しかし、今ではこのプロパティは推奨されず、他の同様のプロパティは読み込み専用です。

はここAppDelegate didFinishLaunchingWithOptions方法で私のAWSのセットアップです:

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 
} 

は注意してください。結果は同じです。

本当に助けていただきありがとうございます。
よろしくお願いいたします。 アレックス

+0

ログアウトしているのと同じAWSIdentityManagerを使用していますが、あなたのような問題があります。それは を表示します。 '' 'UserInfo = {__ type = NotAuthorizedException、message =このアイデンティティプールでは認証されていないアクセスはサポートされていません}' '' まだログアウトできません。 すべてのソリューション? –

+0

このサービスにはどのようなサービスがありますか?いくつかのAWSLambda?またはAWSIdentityManager自体? –

+0

AWSIdentityManager。そして、それは魅力のようなカスタムログインを扱いますが、私は '[[AWSIdentityManager defaultIdentityManager] logoutWithCompletionHandler:^(ID result、NSError * error) 'を使用してログアウトします。 上記のエラーが表示されます。ログアウトが検出された後に別のジョブを実行する必要があります。エラーはありません。上記のハンドラでユーザがログアウトしたことを検出すると、代わりに '[[AWSIdentityManager defaultIdentityManager] isLoggedin]'を使って別のジョブを実行します。 –

答えて

0

これはログイン方法の実装で行っていますか?

- (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"}]]; 
    } 
} 

More details

+0

こんにちは、ラチット!自分のコードからわかるように、AWSognitoCredentialsProviderをインスタンス化するためにカスタムAWSIdentityProviderManagerを使用していません。したがって、私は独自の "ログイン"方法を実装していません。代わりに私は[強化](http:// docs。aws.amazon.com/cognito/latest/developerguide/authentication-flow.html)フローは、AWS SDKを使用してログインを処理します。ここに私のログイン 'AWSIdentityManager.defaultIdentityManager()の例を示します。{}内のloginWithSign(AWSFacebookSignInProvider.sharedInstance()){(結果、エラー) –

関連する問題