Как правильно реализовать интеграцию AWS Cognito и Facebook на iOS? - PullRequest
0 голосов
/ 29 октября 2018

Я некоторое время искал в интернете, и до сих пор не получил правильного ответа, потому что ответов действительно много, но некоторые из них, я могу сказать, уже обесценились (вероятно).

В настоящее время в нашем приложении уже реализован пул пользователей AWS Cognito, и мы можем войти через имя пользователя и пароль напрямую. Я пытаюсь выяснить, как это работает, и добавил Facebook Login SDK. Похоже, мне нужно сделать много вещей, прежде чем вводить FB Login. Наш клиент предоставил нам только идентификатор пула пользователей AWS, и я запрашиваю федеративный идентификатор, так как я нашел его в учебниках и темах Stackoverflow. А мой менеджер проекта настаивает на том, что внедрение FB Login должно быть довольно простым и легким, чтобы AWS не требовался очень сложный процесс для реализации этого. Но я хочу доказать, что они не правы. Поэтому я искал много инструкций. Я добавил этот блок кода:

override func logins () -> AWSTask<NSDictionary> {
    if(/*logic to determine if user is unauthenticated*/) {
        return AWSTask(result:nil)
    }else if (/*logic to determine if user is Facebook*/){
        if let token = AccessToken.current?.authenticationToken {
            return AWSTask(result: [AWSIdentityProviderFacebook:token])
        }
        return AWSTask(error:NSError(domain: "Facebook Login", code: -1 , userInfo: ["Facebook" : "No current Facebook access token"]))
    }else {
        return super.logins()
    }
}

Это из документации AWS: https://docs.aws.amazon.com/cognito/latest/developerguide/facebook.html Они не дают достаточно руководств, поэтому я не понимаю, что я делаю. Затем я нашел несколько ответов, чтобы использовать это:

let credentialsProvider = AWSCognitoCredentialsProvider(
    regionType: AWSRegionType.APSoutheast1,
    identityPoolId: "ap-southeast-1:1f32a5d2-eb10-44da-8f07-fac95614a577",
    identityProviderManager: FacebookProvider())
let configuration = AWSServiceConfiguration(
    region: .APSoutheast1,
    credentialsProvider: credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration

credentialsProvider.getIdentityId().continueWith(block: { (task) in
    guard task.error == nil else {
        print(task.error)
        return nil
    }
    // We've got a session and now we can access AWS service via default()
    // e.g.: let cognito = AWSCognito.default()
    return task
})

Я нашел этот код из этого руководства: https://medium.com/@dkabyshev/api-less-backend-for-ios-with-aws-in-swift-part-1-cf230f080af5 Итак, я сказал ранее, что некоторые из руководств, возможно, уже устарели. Если вы посмотрите на строку кода let cognito = AWSCognito.default(), я пытаюсь вызвать ту же строку, но она не распознается. Возможно, AWS Cognito SDK уже обновил его, и я не знаю, какой класс и метод вызывают одно и то же. Но это не единственное, что меня так смущает.

В этой строке: AWSCognitoIdentityUserPool(forKey: "userpool"), он должен уже иметь currentUser() при входе в систему, но при использовании FB его нет. Итак, мой последний вопрос: после credentialsProvider.getIdentityId().continueWith(block:) какие коды я должен использовать для продолжения входа в систему и получения сеансов? Я делаю это правильно? Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...