Need to configure your backend?See Build a Backend →
サインアウト
Amplifyは、Amplify Authなどのバックエンドリソースと対話するためのクライアントライブラリを提供します。
ユーザーをアプリケーションからサインアウトするには、signOut APIを使用します。
func signOutLocally() async { let result = await Amplify.Auth.signOut() guard let signOutResult = result as? AWSCognitoSignOutResult else { print("Signout failed") return }
print("Local signout successful: \(signOutResult.signedOutLocally)") switch signOutResult { case .complete: // Sign Out completed fully and without errors. print("Signed out successfully")
case let .partial(revokeTokenError, globalSignOutError, hostedUIError): // Sign Out completed with some errors. User is signed out of the device. if let hostedUIError = hostedUIError { print("HostedUI error \(String(describing: hostedUIError))") }
if let globalSignOutError = globalSignOutError { // Optional: Use escape hatch to retry revocation of globalSignOutError.accessToken. print("GlobalSignOut error \(String(describing: globalSignOutError))") }
if let revokeTokenError = revokeTokenError { // Optional: Use escape hatch to retry revocation of revokeTokenError.accessToken. print("Revoke token error \(String(describing: revokeTokenError))") }
case .failed(let error): // Sign Out failed with an exception, leaving the user signed in. print("SignOut failed with \(error)") }}func signOutLocally() -> AnyCancellable { Amplify.Publisher.create { await Amplify.Auth.signOut() }.sink(receiveValue: { result in guard let signOutResult = result as? AWSCognitoSignOutResult else { print("Signout failed") return } print("Local signout successful: \(signOutResult.signedOutLocally)") switch signOutResult { case .complete: // Sign Out completed fully and without errors. print("Signed out successfully")
case let .partial(revokeTokenError, globalSignOutError, hostedUIError): // Sign Out completed with some errors. User is signed out of the device. if let hostedUIError = hostedUIError { print("HostedUI error \(String(describing: hostedUIError))") }
if let globalSignOutError = globalSignOutError { // Optional: Use escape hatch to retry revocation of globalSignOutError.accessToken. print("GlobalSignOut error \(String(describing: globalSignOutError))") }
if let revokeTokenError = revokeTokenError { // Optional: Use escape hatch to retry revocation of revokeTokenError.accessToken. print("Revoke token error \(String(describing: revokeTokenError))") }
case .failed(let error): // Sign Out failed with an exception, leaving the user signed in. print("SignOut failed with \(error)") } })}すべてのデバイスからユーザーをサインアウトするグローバルサインアウトを実行することもできます。これは、ユーザーに発行されたすべてのリフレッシュトークンも無効にします。ユーザーの現在のアクセストークンとIDトークンは、リフレッシュトークンの有効期限が切れるまで他のデバイスで有効なままです(アクセストークンとIDトークンは発行後1時間で期限切れになります)。
import AWSCognitoAuthPlugin
func signOutGlobally() async { let result = await Amplify.Auth.signOut(options: .init(globalSignOut: true)) guard let signOutResult = result as? AWSCognitoSignOutResult else { print("Signout failed") return }
print("Local signout successful: \(signOutResult.signedOutLocally)") switch signOutResult { case .complete: // handle successful sign out case .failed(let error): // handle failed sign out case let .partial(revokeTokenError, globalSignOutError, hostedUIError): // handle partial sign out }}func signOutGlobally() -> AnyCancellable { Amplify.Publisher.create { await Amplify.Auth.signOut(options: .init(globalSignOut: true)) }.sink(receiveValue: { result in guard let signOutResult = result as? AWSCognitoSignOutResult else { print("Signout failed") return } print("Local signout successful: \(signOutResult.signedOutLocally)") switch signOutResult { case .complete: // handle successful sign out case .failed(let error): // handle failed sign out case let .partial(revokeTokenError, globalSignOutError, hostedUIError): // handle partial sign out } })}