2016-06-02 5 views
4

Ich versuche, Benutzer mit meiner App über Facebook und Amazon Cognito anmelden. Ich fand vorherige Dokumentation zu verwenden sagen:AWS Cognito Swifts Anmeldeinformationen Provider "Logins ist veraltet: Verwenden Sie AWSIdentityProviderManager"

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

aber ich die Meldung, dass ich immer Logins ist veraltet und das Protokoll AWSIdentityProviderManager verwenden Logins an den Anbieter von Anmeldeinformationen zur Verfügung zu stellen, die ich weiß nicht, wie zu tun ist. Ich habe versucht, meine Klasse implementieren AWSIdentityProviderManager und erstellt eine Logins-Methode, da ich mercentsProvider eine Methode "setIdentiyProviderManagerOnce (self)", aber ich wusste nicht, was in der implementierten logins() -Methode zu tun, um die Facebook-Token zu verbinden Anmeldeinformationsmanager.

sah Ive an Amazonen Github Beispiele, aber ich sie scheint nicht viel

+2

es November und Amazon offizielle Dokumente werden nicht aktualisiert. Es ist ~ 6 Monate her, seit die Login-Methode veraltet ist und niemand mehr daran interessiert ist, Dokumente zu aktualisieren. Ich kann das verstehen, da Amazon nur ein kleines Startup ist ... Oh, warte. –

Antwort

4

Nach etwas schließlich fand ich, um zu helfen war ich nicht der einzige mit diesem Problem. AWS hat sein SDK aktualisiert, ohne die Hauptdokumentation zu ändern. Die Lösung besteht darin, den AWSCognitoIdentityProviderManager in einer benutzerdefinierten Klasse zu implementieren und diese an den Anmeldeinformationsanbieter zu füttern. Heres der Code durch simaomi in der Github Diskussion unten angegeben (es ist eher eine schnelle Lösung):

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) 

das sdk Beispiel zeigt, wie Sie wirklich die Lösung für die Diskussion

hier Schauen Sie implementieren sollten: https://github.com/aws/aws-sdk-ios/issues/357

und hier für aktualisiertem sdk Beispiele: https://github.com/awslabs/aws-sdk-ios-samples/tree/developer-authenticated-identities-2-4/CognitoSync-Sample

+1

Sie haben Recht, die von Ihnen bereitgestellten Beispiele/Links beschreiben die Alternative zur Verwendung von setLogins in neuen SDK-Versionen. Wir arbeiten gerade daran, unsere Dokumentation zu aktualisieren. –

+0

@MarkMercurio - Planst du auch, Blogs für neuen Fluss zu aktualisieren? Weil, als ich versuchte, neue User Pool Twitter-Option zu erstellen, wurde deaktiviert. Oder muss ich föderierte Identitäten erstellen. – slonkar

+0

@MarkMercurio - Es wäre nett, wenn Sie diese Seite auch aktualisieren könnten: http://docs.aws.amazon.com/cognito/latest/developerguide/facebook.html. Es wurde zuletzt aktualisiert 17.04.2016, also ist es nicht extrem alt, aber scheint veraltet zu sein, da die Verwendung des Swift-Codebeispiels mir auch den veralteten Fehler gab. –