Как получить имя пользователя и пароль в AWSCognitoCredentialsProviderHelper? - PullRequest
0 голосов
/ 19 октября 2018

Я использую AWS Cognito User Pool для входа пользователя в приложение iOS, которое работает нормально.Я хочу добавить Идентификационные данные разработчика .

Согласно руководству

Чтобы использовать идентифицированные разработчиком удостоверения, реализуйте свой собственный класс поставщика удостоверений, который расширяет AWSCognitoCredentialsProviderHelper.Ваш класс провайдера идентификации должен вернуть объект ответа, содержащий маркер в качестве атрибута.

import AWSCore
/*
 * Use the token method to communicate with your backend to get an
 * identityId and token.
 */
class DeveloperAuthenticatedIdentityProvider : AWSCognitoCredentialsProviderHelper {
    override func token() -> AWSTask<NSString> {
    //Write code to call your backend:
    //pass username/password to backend or some sort of token to authenticate user, if successful, 
    //from backend call getOpenIdTokenForDeveloperIdentity with logins map containing "your.provider.name":"enduser.username"
    //return the identity id and token to client
    //You can use AWSTaskCompletionSource to do this asynchronously

    // Set the identity id and return the token
    self.identityId = resultFromAbove.identityId
    return AWSTask(result: resultFromAbove.token)
}

Чтобы использовать этого провайдера идентификации, передайте его в AWSCognitoCredentialsProvider, как показано в следующем примере:

let devAuth = DeveloperAuthenticatedIdentityProvider(regionType: .YOUR_IDENTITY_POOL_REGION, identityPoolId: "YOUR_IDENTITY_POOL_ID", useEnhancedFlow: true, identityProviderManager:nil)
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .YOUR_IDENTITY_POOL_REGION, identityProvider:devAuth)
let configuration = AWSServiceConfiguration(region: .YOUR_IDENTITY_POOL_REGION, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration

Я ожидаю, что после того, как я внедрил AWSCognitoCredentialsProviderHelper и заменил новый credentialsProvider в моем в настоящее время работающем коде для Cognito User Pool, все будет хорошо работать с Аутентифицированными разработчиком удостоверениями.Проблема в том, где я могу получить имя пользователя / пароль в функции token()?

В Cognito User Pool я просто вызываю AWSCognitoIdentityUser.getDetails(), signInViewController будет представлен AWSCognitoIdentityInteractiveAuthenticationDelegate и именем пользователяи пароль представлены passwordAuthenticationCompletionSource?.set(result: authDetails) в signInViewController.Затем Cognito User Pool сделает все остальное.

Для реализации идентификаторов, прошедших проверку подлинности разработчика, как мне следует ввести имя пользователя и пароль, чтобы выполнить вход, и они окажутся в функции token(), как и ожидалось в учебнике?

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