【问题标题】:Storing email in keychain impossible (KeychainItemWrapper)将电子邮件存储在钥匙串中是不可能的(KeychainItemWrapper)
【发布时间】:2012-03-27 08:44:25
【问题描述】:

我正在使用 github 提供的 ARCified 版本的 KeychainItemWrapper,但我无法使用它来存储电子邮件和密码。

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"myApp" accessGroup:@"MY_APP.com.yourcompany.GenericKeychainSuite"];
    [keychainItem setObject:[self.email dataUsingEncoding:NSUTF8StringEncoding] forKey:(__bridge id)kSecAttrAccount];
    [keychainItem setObject:self.password forKey:(__bridge id)kSecValueData];    

只要我存储一封没有@ 符号 (@) 的电子邮件,我就可以完美地工作。否则,我得到错误

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

这来自那些行

result = SecItemAdd((__bridge CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);
NSAssert( result == noErr, @"Couldn't add the Keychain Item." );

您知道这里可能出了什么问题吗?

谢谢

【问题讨论】:

    标签: objective-c ios automatic-ref-counting keychain


    【解决方案1】:

    嗯,我刚刚按照那个页面iOS KeychainItemWrapper not updating的建议找到了答案,就是添加

    [keychainWrapper setObject:@"Myappstring" forKey: (id)kSecAttrService];
    

    【讨论】:

    • KeychainItemWrapper 主要为我工作,处理了许多电子邮件地址(作为用户名存储在 kSecAttrAccount 中),但特别是一封电子邮件不起作用。然后我为 kSecAttrService 添加了上面的行,现在一切都很完美! -谢谢@user229688
    • 感谢 user229688。为 kSecAttrService 设置对象后,它可以完美运行
    • 请注意,您必须在设置 kSecAttrAccount 和 kSecValueData 之前进行设置。否则它仍然会崩溃。
    • 下次运行应用程序时如何检索这个?
    • 我在我设置 kSecAttrAccount 的行之前添加了那行代码,现在它在你的代码行上崩溃了。还有其他人遇到这种情况吗?
    【解决方案2】:

    我知道这是一个老问题,但这发生在我身上,上面的答案并没有解决我的问题。就我而言,当手机被锁定时,我正在访问钥匙串。 最后我在初始化钥匙串后使用它来解决它。

    keychainWrapper.setObject(kSecAttrAccessibleAlways, forKey: kSecAttrAccessible)
    

    默认情况下,除非您的手机未解锁,否则钥匙串似乎不允许您访问它。

    更多信息在这里:http://b2cloud.com.au/tutorial/using-the-keychain-to-store-passwords-on-ios/

    【讨论】:

    • 有趣的感谢您的输入,尽管不建议总是使用它,因为它不太安全
    猜你喜欢
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多