2016-06-02 2 views
4

Я пытаюсь разрешить пользователям регистрироваться в моем приложении с помощью facebook и Amazon Cognito. Я нашел предыдущую документацию о том, чтобы использовать:AWS Cognito Swift credentials provider «logins устарел: используйте AWSIdentityProviderManager»

let token = FBSDKAccessToken.currentAccessToken().tokenString 
    var logins: NSDictionary = NSDictionary(dictionary: ["graph.facebook.com" : token]) 
    credentialsProvider.logins = [AWSIdentityProviderFacebook: token] 

, но я получаю сообщение, что Логины является устаревшим и использовать AWSIdentityProviderManager протокол для обеспечения логины к поставщику мандатной, что я не знаю, как это сделать. Я попытался реализовать класс AWSIdentityProviderManager и создал метод входа в систему, так как я замечаю, что учетные данныеProvider имеет метод «setIdentiyProviderManagerOnce (self)», но я не знал, что делать в реализованном методе logins() для подключения токена facebook к менеджер учетных данных.

Ive посмотрел на примерах GitHub амазонки но они не похоже, чтобы помочь много

+2

это ноябрь и Amazon официальные документы не обновляются. прошло ~ 6 месяцев с тех пор, как метод входа в систему устарел, и никто не беспокоится о обновлении документов. Я могу понять, что, поскольку Amazon - это всего лишь небольшой стартап ... О, подождите. –

ответ

4

После поисков я наконец узнал, что я был не только один с этой проблемой. AWS обновили свой sdk, не изменяя основную документацию. Решение состоит в том, чтобы реализовать AWSCognitoIdentityProviderManager в пользовательском классе и передать его поставщику учетных данных. Heres код предоставляется 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

+1

Вы правы, приведенные примеры/ссылки описывают альтернативу использованию setLogins в новых версиях SDK. В настоящее время мы работаем над обновлением нашей документации. –

+0

@MarkMercurio - Вы также планируете обновлять блоги для нового потока? Потому что, когда я попытался создать новый параметр Twitter для пользователей, был отключен. Или мне нужно создать Federated Identities. – slonkar

+0

@MarkMercurio - Было бы здорово, если бы вы могли обновить эту страницу: http://docs.aws.amazon.com/cognito/latest/developerguide/facebook.html. Последнее обновление было обновлено 4/17/2016, поэтому он не очень старый, но, похоже, устарел, так как использование образца кода Swift также дало мне устаревшую ошибку. –

Смежные вопросы