Поставщик учетных данных AWS Cognito Swift "вход в систему устарел: используйте AWSIdentityProviderManager"
Я пытаюсь разрешить пользователям регистрироваться в моем приложении с помощью Facebook и Amazon Cognito. Я нашел предыдущую документацию, в которой говорилось:
let token = FBSDKAccessToken.currentAccessToken().tokenString
var logins: NSDictionary = NSDictionary(dictionary: ["graph.facebook.com" : token])
credentialsProvider.logins = [AWSIdentityProviderFacebook: token]
но я получаю сообщение о том, что имена входа устарели, и я использую протокол AWSIdentityProviderManager для предоставления имен входа поставщику учетных данных, что я не знаю, как это сделать. Я попытался, чтобы мой класс реализовал AWSIdentityProviderManager, и создал метод входа в систему, так как я заметил, что credentialsProvider имеет метод "setIdentiyProviderManagerOnce(self)", но я не знал, что делать в реализованном методе logins(), чтобы подключить токен facebook к учетным данным. менеджер.
Я посмотрел на примеры амазонок GitHub, но мне они не очень помогли
1 ответ
Посмотрев вокруг, я наконец-то узнал, что я не единственный с этой проблемой. AWS обновил свой SDK, не изменяя основную документацию. Решением является реализация AWSCognitoIdentityProviderManager в пользовательском классе и передача его поставщику учетных данных. Вот код, предоставленный simaomi в обсуждении github ниже (это скорее быстрое исправление):
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)
Пример SDK показывает, как вы должны реализовать решение
Смотрите здесь для обсуждения: https://github.com/aws/aws-sdk-ios/issues/357
и здесь для обновленных примеров SDK: https://github.com/awslabs/aws-sdk-ios-samples/tree/developer-authenticated-identities-2-4/CognitoSync-Sample