iOS-вход в Facebook с проблемами федеративных удостоверений AWS

Я использую AWS Cognito Federated ID в приложении iOS для социальных сетей (Facebook, Google). После входа в Facebook пользователь получает ошибку "Токен не от поддерживаемого поставщика этого пула идентичностей". Если я разрешу неаутентифицированные идентификаторы в идентификаторах Fed, то этот пользователь получит неаутентифицированные идентификаторы пользователей (связанные логины = 0) в браузере идентификаторов и получит ключ сеанса и т. Д. Кто-нибудь может помочь в решении этой проблемы?

Пожалуйста, не отмечайте этот вопрос как дублированный, так как я видел все подобные вопросы и следовал там решениям, но безрезультатно!

Краткое описание кода:

  1. Я добавил Facebook в проверенных провайдерах для федеративного идентификатора.
  2. Я также добавил Facebook в поставщики удостоверений для пула пользователей и сделал сопоставление атрибутов (сопоставленный идентификатор и адрес электронной почты).
  3. Я создал класс поставщика социальных идентификаторов, который реализует протокол AWSIdentityProviderManager. Этот класс содержит метод входа в систему, как указано ниже:

    (AWSTask<NSDictionary<NSString *, NSString *> *> )logins {
        FBSDKAccessToken fbToken = [FBSDKAccessToken currentAccessToken];
        if(fbToken){
            NSString *token = fbToken.tokenString;
            return [AWSTask taskWithResult: @{ AWSIdentityProviderFacebook : token }];
        } else {
            NSLog(@"FB Token is not found in AWSSocialIdentityProvider class");
           return [AWSTask taskWithError:[NSError errorWithDomain:@"facebook"
           code:-1
           userInfo:@{@"error":@"No current Facebook access token"}]];
        }
    }
    
  4. My Sign In View Controller выполняет вход в FB. Он создает fbCredentialsProvider, передавая класс socialIDProvider в качестве identityProvider в своей конструкции, реализованной, как показано ниже:

    self.fbCredentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"us-east-1:XXXXXXXXXXXX" identityProviderManager:self.socialIDProvider];
    AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:self.fbCredentialsProvider];
    [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
    
    //wipe cached credentials
    [self.fbCredentialsProvider clearCredentials];
    

    // Для вызова логинов fb [self.fbCredentialsProvider credentials];

  5. Приведенный выше код вызывается в методе didCompleteWithResult кнопки входа в FB. Вот и все.

0 ответов

Другие вопросы по тегам