Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.
Gen1 DocsLegacy

Page updated Mar 26, 2026

サインアップ

Amplifyは、Amplify Authなどのバックエンドリソースと対話できるクライアントライブラリを提供します。

Amplify Authをフロントエンドアプリケーションで最も簡単に始める方法は、Authenticatorコンポーネントを使用することです。このコンポーネントはカスタマイズ可能なUIと完全な認証フローを提供します。

まず、signUp() APIを使用してバックエンドに新しいユーザーを作成できます:

func signUp(username: String, password: String, email: String, phonenumber: String) async {
let userAttributes = [AuthUserAttribute(.email, value: email), AuthUserAttribute(.phoneNumber, value: phonenumber)]
let options = AuthSignUpRequest.Options(userAttributes: userAttributes)
do {
let signUpResult = try await Amplify.Auth.signUp(
username: username,
password: password,
options: options
)
if case let .confirmUser(deliveryDetails, _, userId) = signUpResult.nextStep {
print("Delivery details \(String(describing: deliveryDetails)) for userId: \(String(describing: userId)))")
} else {
print("SignUp Complete")
}
} catch let error as AuthError {
print("An error occurred while registering a user \(error)")
} catch {
print("Unexpected error: \(error)")
}
}
func signUp(username: String, password: String, email: String, phonenumber: String) -> AnyCancellable {
let userAttributes = [
AuthUserAttribute(.email, value: email),
AuthUserAttribute(.phoneNumber, value: phonenumber)
]
let options = AuthSignUpRequest.Options(userAttributes: userAttributes)
Amplify.Publisher.create {
try await Amplify.Auth.signUp(
username: username,
password: password,
options: options
)
}.sink {
if case let .failure(authError) = $0 {
print("An error occurred while registering a user \(authError)")
}
}
receiveValue: { signUpResult in
if case let .confirmUser(deliveryDetails, _, userId) = signUpResult.nextStep {
print("Delivery details \(String(describing: deliveryDetails)) for userId: \(String(describing: userId)))")
} else {
print("SignUp Complete")
}
}
return sink
}

signUp APIレスポンスには nextStep プロパティが含まれており、これを使用して追加のアクションが必要かどうかを判定できます。以下のネクストステップが返される可能性があります:

ネクストステップ説明
confirmSignUpサインアップをユーザーからコードを収集して confirmSignUp を呼び出すことで確認する必要があります。
doneサインアッププロセスが完全に完了しました。

サインアップの確認

デフォルトでは、サインアップしたすべてのユーザーは、メールアドレスまたは電話番号に送信された確認コードで確認するまで、未確認のステータスのままです。以下は、loginWith オプションとして phone または email が使用される場合に使用されるデフォルトの検証方法です。

ログインオプションユーザーアカウント検証チャネル
phone電話番号
emailメール
emailphoneメール

ユーザーから確認コードを受け取った後、サインアップを確認できます:

func confirmSignUp(for username: String, with confirmationCode: String) async {
do {
let confirmSignUpResult = try await Amplify.Auth.confirmSignUp(
for: username,
confirmationCode: confirmationCode
)
print("Confirm sign up result completed: \(confirmSignUpResult.isSignUpComplete)")
} catch let error as AuthError {
print("An error occurred while confirming sign up \(error)")
} catch {
print("Unexpected error: \(error)")
}
}
func confirmSignUp(for username: String, with confirmationCode: String) -> AnyCancellable {
Amplify.Publisher.create {
try await Amplify.Auth.confirmSignUp(
for: username,
confirmationCode: confirmationCode
)
}.sink {
if case let .failure(authError) = $0 {
print("An error occurred while confirming sign up \(authError)")
}
}
receiveValue: { _ in
print("Confirm signUp succeeded")
}
}

パスワードレス方式でのサインアップ

アプリケーションのユーザーはパスワードレス方式を使用してサインアップすることもできます。詳細については、パスワードレスのコンセプトページをご覧ください。

SMS OTP

// 電話番号を使用してサインアップします
func signUp(username: String, phonenumber: String) async {
let userAttributes = [
AuthUserAttribute(.phoneNumber, value: phonenumber)
]
let options = AuthSignUpRequest.Options(userAttributes: userAttributes)
do {
let signUpResult = try await Amplify.Auth.signUp(
username: username,
options: options
)
if case let .confirmUser(deliveryDetails, _, userId) = signUpResult.nextStep {
print("Delivery details \(String(describing: deliveryDetails)) for userId: \(String(describing: userId)))")
} else {
print("SignUp Complete")
}
} catch let error as AuthError {
print("An error occurred while registering a user \(error)")
} catch {
print("Unexpected error: \(error)")
}
}
// 受け取ったOTPでサインアップを確認します
func confirmSignUp(for username: String, with confirmationCode: String) async {
do {
let confirmSignUpResult = try await Amplify.Auth.confirmSignUp(
for: username,
confirmationCode: confirmationCode
)
print("Confirm sign up result completed: \(confirmSignUpResult.isSignUpComplete)")
} catch let error as AuthError {
print("An error occurred while confirming sign up \(error)")
} catch {
print("Unexpected error: \(error)")
}
}
// 電話番号を使用してサインアップします
func signUp(username: String, phonenumber: String) -> AnyCancellable {
let userAttributes = [
AuthUserAttribute(.phoneNumber, value: phonenumber)
]
let options = AuthSignUpRequest.Options(userAttributes: userAttributes)
let sink = Amplify.Publisher.create {
try await Amplify.Auth.signUp(
username: username,
options: options
)
}.sink {
if case let .failure(authError) = $0 {
print("An error occurred while registering a user \(authError)")
}
}
receiveValue: { signUpResult in
if case let .confirmUser(deliveryDetails, _, userId) = signUpResult.nextStep {
print("Delivery details \(String(describing: deliveryDetails)) for userId: \(String(describing: userId)))")
} else {
print("SignUp Complete")
}
}
return sink
}
// 受け取ったOTPでサインアップを確認します
func confirmSignUp(for username: String, with confirmationCode: String) -> AnyCancellable {
Amplify.Publisher.create {
try await Amplify.Auth.confirmSignUp(
for: username,
confirmationCode: confirmationCode
)
}.sink {
if case let .failure(authError) = $0 {
print("An error occurred while confirming sign up \(authError)")
}
}
receiveValue: { _ in
print("Confirm signUp succeeded")
}
}

メールOTP

// メールアドレスを使用してサインアップします
func signUp(username: String, email: String) async {
let userAttributes = [
AuthUserAttribute(.email, value: email)
]
let options = AuthSignUpRequest.Options(userAttributes: userAttributes)
do {
let signUpResult = try await Amplify.Auth.signUp(
username: username,
options: options
)
if case let .confirmUser(deliveryDetails, _, userId) = signUpResult.nextStep {
print("Delivery details \(String(describing: deliveryDetails)) for userId: \(String(describing: userId)))")
} else {
print("SignUp Complete")
}
} catch let error as AuthError {
print("An error occurred while registering a user \(error)")
} catch {
print("Unexpected error: \(error)")
}
}
// 受け取ったOTPでサインアップを確認します
func confirmSignUp(for username: String, with confirmationCode: String) async {
do {
let confirmSignUpResult = try await Amplify.Auth.confirmSignUp(
for: username,
confirmationCode: confirmationCode
)
print("Confirm sign up result completed: \(confirmSignUpResult.isSignUpComplete)")
} catch let error as AuthError {
print("An error occurred while confirming sign up \(error)")
} catch {
print("Unexpected error: \(error)")
}
}
// メールアドレスを使用してサインアップします
func signUp(username: String, email: String) -> AnyCancellable {
let userAttributes = [
AuthUserAttribute(.email, value: email)
]
let options = AuthSignUpRequest.Options(userAttributes: userAttributes)
let sink = Amplify.Publisher.create {
try await Amplify.Auth.signUp(
username: username,
options: options
)
}.sink {
if case let .failure(authError) = $0 {
print("An error occurred while registering a user \(authError)")
}
}
receiveValue: { signUpResult in
if case let .confirmUser(deliveryDetails, _, userId) = signUpResult.nextStep {
print("Delivery details \(String(describing: deliveryDetails)) for userId: \(String(describing: userId)))")
} else {
print("SignUp Complete")
}
}
return sink
}
// 受け取ったOTPでサインアップを確認します
func confirmSignUp(for username: String, with confirmationCode: String) -> AnyCancellable {
Amplify.Publisher.create {
try await Amplify.Auth.confirmSignUp(
for: username,
confirmationCode: confirmationCode
)
}.sink {
if case let .failure(authError) = $0 {
print("An error occurred while confirming sign up \(authError)")
}
}
receiveValue: { _ in
print("Confirm signUp succeeded")
}
}

自動サインイン

// OTPでサインアップを確認して自動サインインします
func confirmSignUp(for username: String, with confirmationCode: String) async {
do {
let confirmSignUpResult = try await Amplify.Auth.confirmSignUp(
for: username,
confirmationCode: confirmationCode
)
if case .completeAutoSignIn(let session) = confirmSignUpResult.nextStep {
let autoSignInResult = try await Amplify.Auth.autoSignIn()
print("Auto sign in result: \(autoSignInResult.isSignedIn)")
} else {
print("Confirm sign up result completed: \(confirmSignUpResult.isSignUpComplete)")
}
} catch let error as AuthError {
print("An error occurred while confirming sign up \(error)")
} catch {
print("Unexpected error: \(error)")
}
}
// OTPでサインアップを確認して自動サインインします
func confirmSignUp(for username: String, with confirmationCode: String) -> AnyCancellable {
Amplify.Publisher.create {
try await Amplify.Auth.confirmSignUp(
for: username,
confirmationCode: confirmationCode
)
}.sink {
if case let .failure(authError) = $0 {
print("An error occurred while confirming sign up \(authError)")
}
}
receiveValue: { confirmSignUpResult in
if case let .completeAutoSignIn(session) = confirmSignUpResult.nextStep {
print("Confirm Sign Up succeeded. Next step is auto sign in")
// フローを完了するために `autoSignIn()` APIを呼び出します
} else {
print("Confirm sign up result completed: \(confirmSignUpResult.isSignUpComplete)")
}
}
}
func autoSignIn() -> AnyCancellable {
Amplify.Publisher.create {
try await Amplify.Auth.autoSignIn()
}.sink {
if case let .failure(authError) = $0 {
print("Auto Sign in failed \(authError)")
}
}
receiveValue: { autoSignInResult in
if autoSignInResult.isSignedIn {
print("Auto Sign in succeeded")
}
}
}