2017-03-22 3 views
1

Ich möchte Schlüsselbund verwenden, um Benutzernamen, Passwort und Zugriffstoken zu speichern. Ich fügte die keychainItem.h und keyChainItem.m implementierten here hinzu. Und das ist, was ich tat:iOS: Speichern Benutzername, Passwort und Zugriffstoken mit Schlüsselbund

1- ich eine Eigenschaft Schlüsselbund erstellt in myViewController.h dann in der viewDidLoad ich instanziiert es wie folgt aus:

self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Login" accessGroup:nil]; 

Als ich den Benutzernamen, das Passwort und die Zugriffstoken ist dies was ich tat:

2- sie den Benutzernamen zu speichern

[self.keychain setObject:userName forKey:(__bridge id)kSecAttrAccount]; 

Als ich es testen, es funktioniert.

Jetzt möchte ich das Passwort und das Zugriffs-Token hinzufügen.

Für die Zugriffstoken habe ich versucht,

[self.keychain setObject:accessToken forKey:(__bridge id)kSecAttrAccessible]; 

Als ich den Absturz der Anwendung führen:

Assertion failure in -[KeychainItemWrapper writeToKeychain] KeychainItemWrapper.m:322 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't update the Keychain Item.' 

ich einen anderen Schlüsselanhänger

self.keychainToken = [[KeychainItemWrapper alloc] initWithIdentifier:@“Token” accessGroup:nil]; 

dann hat ich den Wert zu schaffen versucht, :

[self.keychainToken setObject:accessToken forKey:(__bridge id)kSecValueData]; 

Aber ich habe den gleichen Fehler.

Was ist los mit dem, was ich getan habe? Wie kann ich den Benutzer, das Passwort und den accessToken über einen Schlüsselbund speichern?

Antwort

1

Sie können es wie folgt verwenden:

self.keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"Login" accessGroup:nil]; 

[self.keychain setObject:userName forKey:(id)kSecAttrAccount]; 
[self.keychain setObject:password forKey:(__bridge id)(kSecValueData)]; 
[self.keychain setObject:accessToken forKey:(id)kSecAttrTokenID]; 
[self.keychain setObject:@"LoginService" forKey: (id)kSecAttrService]; 
+0

Und was ist mit dem Passwort? –

+0

Wenn ich kSecValueData für den accessToken verwende, hast du recht. Aber wie kann ich das Passwort speichern? –

+0

@Llg: Siehe die aktualisierte Antwort. – Poles

Verwandte Themen