2016-07-17 17 views
0

これまでのところ、私は、AWSのドキュメントcで、速やかに行うのではなく、これを行う方法しか見つけられません。私は正常に次のコードで迅速にユーザーのプールでユーザーを作成しています:SwiftのCognito User Poolsでユーザーにサインアップして電話番号を確認するにはどうすればよいですか?

let userPool = AWSCognitoIdentityUserPool(forKey: "myApp") 

var name = AWSCognitoIdentityUserAttributeType() 
name.name = "name" 
name.value = nameEntry.text 

var phone = AWSCognitoIdentityUserAttributeType() 
phone.name = "phone_number" 
phone.value = "+1" + phoneNumberEntry.text! 

var email = AWSCognitoIdentityUserAttributeType() 
email.name = "email" 
email.value = emailEntry.text 

userPool.signUp("goats", password: passwordEntry.text!, userAttributes: [name, phone, email], validationData: nil) 

は、上記のコードは期待通りCognitoユーザープールでユーザーが作成されます。

さらに、上記のコードは、提供された電話番号に確認コードを送信します。しかし、私はこの認証コードをAWSに戻して電話番号を確認することができませんでした。ユーザーは、ユーザー・プール内に作成された後、私は、どちらも電話番号を変更している検証されることに次の行の両方を試してみました:それは私は、ユーザー変数を設定しています価値がある何のため

user.verifyAttribute("phone_number", code: verificationEntry.text!) 
user.confirmSignUp(verificationEntry.text!) 

ユーザーがサインアップした後、次のようになります:

self.user = userPool.getUser() 

これは動作しておらず、AWSの目的のドキュメントは役に立ちません。どのようにユーザーの電話番号を確認するための任意のアイデア??ありがとう

答えて

0

サインアップの後、サインアップの確認をしてユーザーを確認し、電話/メール(コードを入手した場所)にマークを付ける必要があります。

get userを使用して、属性が検証済みとしてマークされているかどうかを確認できます。

P .:問題が発生した場合は、私のユーザープールID、ユーザー名、およびサインアップ時間枠を私にお知らせください。

0

userPool.getUser(username: String)ではなくuserPool.getUser()を使用してください。あなたのケースでは

self.user = userPool.getUser(nameEntry.text) 

そうしないと、エラーが発生し、次のかもしれません。

[Debug] AWSURLResponseSerialization.m line:63 | -[AWSJSONResponseSerializer responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response body: 
{"__type":"InvalidParameterException","message":"2 validation errors detected: Value at 'username' failed to satisfy constraint: Member must have length greater than or equal to 1; Value at 'username' failed to satisfy constraint: Member must satisfy regular expression pattern: [\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]+"} 
0

確認コードを送信するユーザーを指定する必要があります。したがって、ユーザ名とともにgetUser()を使用してください。次にconfirmSignUp()を呼び出します。

0
@IBAction func confirmButtonPressed(_ sender: AnyObject) { 
    if confirmationCodeTextField.text != nil { 
     let pool = AWSCognitoIdentityUserPool(forKey: "UserPool") 
     let user: AWSCognitoIdentityUser = pool.getUser("userName") 
     user.confirmSignUp(confirmationCodeTextField.text!).continue(with: AWSExecutor.mainThread(), withSuccessBlock: { (task: AWSTask<AWSCognitoIdentityUserConfirmSignUpResponse>) -> Any? in 

      if task.error != nil { 
       // Error 
      } else { 
       // handle the success response 
      } 
      return nil 
     }) 
    } else { 
     // Ask user to enter the confirmation code. 
    } 
} 

上記の方法は、ユーザがを申し込むを確認するためのお手伝いをします。ユーザーを取得する際には、「ユーザー名」を指定する必要があります。このコードはswift 3で書かれています。

関連する問題