swiftのAWS SDKでAuthenticatedのCognito IDを取得する方法
Facebookでログインしたユーザーのcognito identityIdを取得する際、
下記の方法で取得しました。
var logins: NSDictionary = NSDictionary(dictionary: ["graph.facebook.com" : FBSDKAccessToken.currentAccessToken().tokenString])
credentialsProvider.logins = logins as [NSObject : AnyObject]
var configuration = AWSServiceConfiguration(region: DefaultServiceRegionType, credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
credentialsProvider.getIdentityId() //ID取得
sleep(5) //このウェイトがないとエラー
CognitoID = credentialsProvider.identityId //IDを使用する
これで問題なく取得できるのですが、最後の3行の部分が問題で、getIdentityId()が非同期処理のため、IDの取得を待たずに次に処理が進んでしまい、5秒のウェイトを置かないと最後の行でcredentialsProvider.identityIdがnilのためエラーになってしまいます。
そこで、Boltsフレームワークをインストールし、最後の3行を以下のように書き換えました。
credentialsProvider.getIdentityId().continueWithSuccessBlock {(task: BFTask!) -> AnyObject! in
self.CognitoID = credentialsProvider.identityId
return nil
}
しかし、以下のエラーが吐かれて先に進みません。
Cannot invoke 'continueWithSuccessBlock' with an argument list of type '((BFTask!) -> AnyObject!)'
このエラーについて調べましたが、解決方法が見つかりませんでした。
何かご存知の方、ご教示お願いします。