私が見つけることができた主な情報源は、 GitHubのオープンイシューでした。それを読み、AWS ディスカッション フォーラムで J.Toomey によって書かれた投稿を見つけた後、「AWSCognitoCredentialsProvider が遅延ロードされている」ことがわかりました。次のコードを使用して私の問題を解決できました:
1) カスタム AWSIdentityProviderManager を実装
import Foundation
import AWSCognito
class CustomAWSProvider:NSObject, AWSIdentityProviderManager{
var tokens : [NSString : NSString]?
init(tokens: [NSString : NSString]) {
self.tokens = tokens
print("tokens : ", self.tokens);
}
@objc func logins() -> AWSTask {
return AWSTask(result: tokens)
}
}
2) このカスタム プロバイダーを次のように使用します。
let digitsConfiguration = DGTAuthenticationConfiguration(accountFields: .DefaultOptionMask)
Digits.sharedInstance().authenticateWithViewController(nil, configuration: digitsConfiguration) { session, error in
if session != nil {
let credentials = session.authToken + ";" + session.authTokenSecret
let customProvider = CustomAWSProvider.init(tokens: [AWSIdentityProviderDigits : credentials])
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USWest1, identityPoolId: cognitoIdentityPoolId , identityProviderManager: customProvider)
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
credentialsProvider.credentials().continueWithBlock { (task: AWSTask!) -> AnyObject! in
return nil
}.continueWithBlock { (task: AWSTask ) -> AnyObject in
return credentialsProvider.getIdentityId().continueWithBlock { (task: AWSTask!) -> AnyObject! in
if (task.result != nil) {
print("You have been successfully stored in Cognito")
}
if (task.error != nil) {
print(task.error!.localizedDescription)
}
if (task.exception != nil) {
print(task.exception!.description)
}
return nil
}
}
} else {
NSLog("Authentication error: %@", error!.localizedDescription)
}
}