2009-10-08 14 views

Respuesta

19

Utilice el llavero de Apple.

+ (NSString *) getPasswordForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error; 

+ (void) storeUsername: (NSString *) username andPassword: (NSString *) password forServiceName: (NSString *) serviceName updateExisting: (BOOL) updateExisting error: (NSError **) error; 

The first method allows you to request the password associated with an existing username for a particular service name (I’ve just been using the name of my app as a service name). The second allows you to store a username/password/service name combo, and allows you to specify whether or not the appropriate keychain item should be updated with the provided password if an existing one is found that matches the username and service name pair. The last parameter of each is a reference to an NSError object which will contain lower level error information if something goes wrong (and be nil if it does not).

Para más información ver his blog

+0

es la contraseña devuelta en texto sin formato? – pxl

+0

cuando agrego esa clase para mi proyecto me sale un montón de errores extraños tales como "_kSecAttrAccount", se hace referencia a partir de: $ _kSecAttrAccount non_lazy_ptr en SFHFKeychainUtils.o "_SecItemDelete", se hace referencia a partir de: + [SFHFKeychainUtils deleteItemForUsername: andServiceName: Error: ] en SFHFKeychainUtils.o "_kSecReturnAttributes", se hace referencia a partir de: $ _kSecReturnAttributes non_lazy_ptr en SFHFKeychainUtils.o "_kSecClass", se hace referencia a partir de: $ _kSecClass non_lazy_ptr en SFHFKeychainUtils.o "_kSecClassGenericPassword", se hace referencia a partir de: $ _kSecClassGenericPassword non_lazy_ptr en SFHFKeychainUtils.o – Jason

+0

¿Cuál es la mejor práctica para almacenar el valor de nombre de usuario? ¿Hay alguna forma de encontrar nombres de usuario, dado solo el nombre del servicio? – cksubs

5

El keychain es lo que busca.

+2

Ese enlace es para el llavero Mac OS X. Aquí está el enlace para la versión de iPhone (son ligeramente diferentes): http://developer.apple.com/IPhone/library/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html –

+0

Oh, gracias. Solucionado eso. –

3

Utilice el llavero, aquí está some code para hacerlo muy fácil. Funciona en el dispositivo y el simulador.

2

Consulte la fuente de ejemplo Generic Keychain. Esa es la manera de ir en mi humilde opinión

Cuestiones relacionadas