Swift 3で書かれたiOSアプリケーション用のユーザーログインシステムを作成しようとしています。下のコードで、ユーザープール内のユーザーの一意のCognito IDを取得しましたが、このIDをどうすればよいか分かりません。それをユーザーにリンクし、そのユーザーに関連付けられた属性を取得できますか?Cognito IDとユーザー属性をリンクするにはどうすればよいですか?
コード:
@IBAction func loginPressed(_ sender: Any) {
user = self.pool!.getUser(usernameTextField.text!)
user?.getSession(usernameTextField.text!, password: passwordTextField.text!, validationData: nil).continue({ task in
if let err = task.error { // some sort of error
print("LOGIN FAILED")
print(err)
//print(err.userInfo["message"] as! String)
}
else { //Successful login!
// this gets our token from the User Pool
let ret = task.result! as AWSCognitoIdentityUserSession
let myToken = ret.idToken?.tokenString;
print("Token: ", myToken);
let customcedentialProvider = AWSCustomIdentityProvider(tokens: [AWSCustomIdentityProvider.CognitoTokenKey : myToken!])
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: CognitoConstants.COGNITO_REGIONTYPE, identityPoolId: CognitoConstants.COGNITO_IDENTITY_POOL_ID, identityProviderManager: customcedentialProvider)
let configuration = AWSServiceConfiguration(region: CognitoConstants.COGNITO_REGIONTYPE, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
// wipe cached creds
credentialsProvider.clearKeychain()
credentialsProvider.clearCredentials()
// hit it
credentialsProvider.getIdentityId().continue({ (task: AWSTask!) -> AnyObject! in
if (task.error != nil) {
print("Error: ")
} else {
// the task result will contain the identity id
let UserIdentityID = task.result as String? // Im saving user identity id in constant variable called "kUserIdentityID"
print(UserIdentityID)// my identityID
print(credentialsProvider.identityId)// my identityID
}
return nil
})
}
return nil
})
}
出力(アイデンティティID):
Optional("us-east-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
ありがとう!
スウィフトコードはよくわかりません。これを使って、javascriptを使って遊んだ。だから、Cognito UserPoolはFacebook、Googleなどの「アイデンティティプロバイダ」です.Cognito Federated Identityは、さまざまなログイン間のマッピングを、「Cognito Identity ID」と呼ばれる1つの一意のIDに保つのに役立ちます。通常、Cognito Federated IDでデータセット内のデータを格納および取得します。複数ログインの場合は、それらを同期します。私があなたの質問を理解している場合は、上記のデータセットにユーザープール "ユーザー名"を格納して、ユーザープールを取得してユーザープールを照会することができます。 – Partha
ガイダンスをありがとう!私は、このツールをしっかりと理解していませんでした。ユーザーのデータセットを作成してユーザー情報を登録することができました。ログインすると、ユーザー情報を取得し、認証されたユーザーとしてアプリケーションに進むことができるようになりました。 –