Войдите и получите идентификатор гостя — Усиление аутентификации SwiftUI (iOS)

#swift #amazon-web-services #swiftui #aws-amplify #aws-amplify-cli

Вопрос:

Я поддерживаю гостевой доступ к приложению, чтобы позже пользователь мог создать учетную запись, если захочет. Я включил неавторизованные входы amplify update auth в систему . Если бы я должен был войти в систему зарегистрированного в Интернете пользователя, я бы сделал:

 func signIn(username: String, password: String) {
    Amplify.Auth.signIn(username: username, password: password) { result in
        switch result {
        case .success:
            print("Sign in succeeded")
        case .failure(let error):
            print("Sign in failed (error)")
        }
    }
}
 

Но как мне запустить гостевое событие (войти локально как гость), а затем получить уникальный идентификатор, присвоенный устройству?

Я обнаружил, что могу получить идентификатор устройства следующим образом:

 Amplify.Auth.fetchAuthSession().id
 

Однако, как только я прочитаю это значение несколько раз, я увижу разные идентификаторы, есть ли способ получить один уникальный идентификатор текущего устройства?

Ответ №1:

В итоге я воспользовался этим:

 // Gets signed in User
func getUser() async -> AuthUser {
    async let user = Amplify.Auth.getCurrentUser()
    return await user!
}
 

Конечно, сначала вы должны проверить наличие сеанса, потому что я разворачиваю его выше, и если он равен нулю, ваше приложение выйдет из строя. После того, как пользователь будет возвращен, вы можете делать такие вещи, как user.id или что-то в этом роде 🤓

ПРИМЕЧАНИЕ: Я использую async функцию, представленную в Swift 5.5, если у вас ее еще нет, просто удалите из нее async/await