Amazon Cognito を使用して、iOS 上の Facebook と Twitter でユーザーを認証しようとしています。公式ドキュメントが古いため実装できません。
これが私のコードです:
NSString *token = [FBSDKAccessToken currentAccessToken].tokenString;
credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionAPNortheast1 identityPoolId:IDENTITY_POOL_ID];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionAPNortheast1
credentialsProvider:credentialsProvider];
credentialsProvider.logins = @{ AWSIdentityProviderFacebook: token };
NSLog(@"credentialsProvider.logins : %@", credentialsProvider.logins);
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
しかし、Xcodeはそれを言います‘logins’ is deprecated: Use “AWSIdentityProviderManager” to provide a valid logins dictionary to the credentials provider
logins が廃止されたため、 credentialsProvider.logins が [null] を返すことがわかりました。
Amazon の公式ドキュメント (英語、日本語) とサンプルが最新ではないため、ユーザーを認証するための正しい実装方法がわかりません。
最後に、Swift でこれに対する解決策を見つけましたが、わかりません。
AWS Cognito Swift 認証情報プロバイダー「ログインは非推奨です: AWSIdentityProviderManager を使用してください」
import Foundation
import AWSCore
import AWSCognito
import AWSCognitoIdentityProvider
class CustomIdentityProvider: NSObject, AWSCognitoIdentityProviderManager{
var tokens : [NSString : NSString]?
init(tokens: [NSString : NSString]) {
self.tokens = tokens
}
@objc func logins() -> AWSTask {
return AWSTask(result: tokens)
}
}
let customProviderManager = CustomIdentityProvider(tokens: logins!)
self.credentialsProvider = AWSCognitoCredentialsProvider(
regionType: Constants.COGNITO_REGIONTYPE,
identityPoolId: Constants.COGNITO_IDENTITY_POOL_ID,
identityProviderManager: customProviderManager)
これらのコードを Objective-C に変換して、上記のコードで変換されたコードを使用する方法を教えていただけますか? もしくは公式の推奨コードを教えてください。