Ich verwende Xcode (Swift). Ich habe versucht, Code zu schreiben, der sich anmeldet, Benutzer bestätigt und Benutzer in den Benutzerpool einloggt. Nach erfolgreicher Anmeldung möchte ich, dass es mit Amazon Cognito Identity verknüpft wird. Im Grunde möchte ich eine so viele Identität Id wie viele Benutzer im Benutzerpool haben.Integrieren von Congnito User Pools mit Amazon Cognito Identity
Bis jetzt kann ich mich anmelden, Benutzer bestätigen und anmelden (mit expliziten Login). Bei der erfolgreichen Anmeldung versuche ich, diesen Benutzer mit Cognito Identity Pool zu verknüpfen, damit für diesen Benutzer eine eindeutige ID generiert werden kann.
Wenn ich mich derzeit als anderer Benutzer bei der Anwendung anmelde, wird ihm die gleiche Identitätskennung zugewiesen wie dem vorherigen Benutzer. Mit anderen Worten: Unabhängig davon, wie viele Benutzer in meinem Benutzerpool vorhanden sind, habe ich auf der Seite AWS Cogntio Federated Identity Pool nur eine Identitäts-ID. Im Idealfall sollte es eine separate Identitäts-ID für verschiedene Benutzer erstellt haben.
Unten ist der Code in App Delegate innerhalb der Funktion didFinishLaunchingWithOptions.
let serviceConfiguration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: nil)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = serviceConfiguration
let configurationUserPool = AWSCognitoIdentityUserPoolConfiguration.init(clientId: "####", clientSecret: "####", poolId: "####")
AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: configurationUserPool, forKey: "testPool")
self.userPool = AWSCognitoIdentityUserPool(forKey: "testPool")
Unten ist der Code in Sign View Controller.
@IBAction func signIn(sender: AnyObject) {
let user = self.userPool.getUser(userName.text!)
user.getSession(userName.text!, password: password.text!, validationData: nil, scopes: nil).continueWithExecutor(AWSExecutor.mainThreadExecutor(), withBlock: {
(task:AWSTask!) -> AnyObject! in
if task.error != nil {
print(task.error)
} else {
print("Successful Login")
let cp = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "######", identityProviderManager:self.userPool)
let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: cp)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
cp.getIdentityId().continueWithBlock { (task: AWSTask!) -> AnyObject! in
if (task.error != nil) {
print("Error: ")
} else {
// the task result will contain the identity id
print("Success with id")
print(task.result)
}
return nil
}
dispatch_async(dispatch_get_main_queue()){
// do stuff here ...
}
}
return nil
})
}
Können Sie bitte eine Referenz oder Dokumentation, die Sie verwendet haben, um dies zu erstellen. Es gibt viele Tutorials für Benutzerpools, die in Ziel c verfügbar sind, aber es ist sehr schwierig, eine Swift-Referenz zu finden. –
Ich habe das im Wesentlichen implementiert, aber ich finde immer noch, dass alle Benutzer noch im selben Identity-Pool speichern. Alle anderen Lösungen, die ich gesehen habe, erwähnen einen benutzerdefinierten Identity-Provider. – RickR