AWSCognito Auth `getSession` не запускает обратный вызов в Swift - PullRequest
0 голосов
/ 10 февраля 2019

Я немного новичок в Swift, но я пытаюсь адаптировать AWSCognitoAuth к плагину Swift для Capacitor.Я создал репо здесь: https://github.com/Kikketer/CapacitorTest

Одна из самых больших проблем заключается в том, что обратный вызов не запускается внутри проекта iOS:

cognitoAuth.getSession(self.bridge.viewController) { (session, err) in
// this is never called after I click the "sign in" button in Cognito
    if(err != nil) {
        NSLog(err.debugDescription)
        call.reject(err.debugDescription)
    } else {
        call.resolve([
            "accessToken": session?.accessToken?.tokenString ?? ""])
    }
}

Через все настройки, которые у меня естьописанный в файле readme, это подсветка:

  1. Я настраиваю пулы пользователей Cognito, добавляю пользователя и создаю для него страницу приложения
  2. Я принес последнюю версию модуля AWSCognito (2.9 с этого времени)
  3. Я написал плагин для конденсатора, чтобы преодолеть разрыв, но теоретически Capacitor не имеет ничего общего с этим, так как это кажется чисто Swift и собственной проблемой реализации: https://github.com/Kikketer/CapacitorTest/blob/master/ios/App/App/CognitoPlugin.swift#L12
  4. Когда я нажимаю кнопку «войти» в приложении, Cognito запускается в «специальном браузере iOS», как и должно быть, но после того, как я нажимаю кнопку входа в этом браузере, он просто там зависает.
  5. Обратный вызов никогда не запускается, пока я не нажму «Готово» (что в данном случае является ошибкой, фактический токен не возвращается).

Я не вижу никаких очевидных ошибокв любом из журналов, так что я неЯ не знаю, куда идти дальше.

Я понимаю, что достаточно много настроек, чтобы повторить эту проблему, но любая помощь будет признательна.

РЕДАКТИРОВАТЬ: я сделал немного ближерасследование и я получаю 405 ответ, но на странице не отображается сообщение об ошибке:

The Server responded with a status of 405
https://[mydomain].auth.us-east-2.amazoncognito.com/login?response_type=code&client_id=[myclientid]&state=[a big guid]&redirect_uri=com.testthing.myapp://signin&scope=email%20openid&code_challenge=[a long code]&code_challenge_method=S256

1 Ответ

0 голосов
/ 10 февраля 2019

Итак, я понял это, подумав об ошибке 405 (метод не разрешен).Происходило то, что POST отправлялся в мое приложение, но мое приложение не обрабатывало POST (потому что Capacitor по умолчанию обрабатывает GET).

Это было простое изменение, чтобы заставить его работать полностью, обновилAppDelegate.swift файл для правильной обработки open url:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    // TODO parse the url and only launch cognito auth for ://signin and ://signout
    return AWSCognitoAuth(forKey: "AWSCognito").application(app, open: url, options: options)

    // This was here before
    //return CAPBridge.handleOpenUrl(url, options)
  }

Надеюсь, это поможет любому, кто попробует свои силы в Cognito + Swift.

...