我想删除SSKeychain中的帐户。 我只获得删除密码的方法,但该帐户仍在钥匙串中。
有没有办法删除帐户或清除SSKeychain?
答案 0 :(得分:3)
我用来删除帐户的内容:\ n
1.实例SSKeychainQuery对象。
2.设置我要删除的服务和帐户
3.调用方法deleteItem:
//1
SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
//2
query.service = @"MyService";
query.account = @"account2";
//3
[query deleteItem:nil];
然后,如果你打电话
NSLog(@"%@",[SSKeychain accountsForService:@"MyService"]);
这将打印名为" MyService"的服务的所有帐户。如果不是" MyService"
,则为null答案 1 :(得分:2)
清除钥匙串的最简单方法是:
SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
NSArray *accounts = [query fetchAll:nil];
for (id account in accounts) {
SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
query.service = @"<INSERT SERVICE NAME>";
query.account = [account valueForKey:@"acct"];
[query deleteItem:nil];
}
答案 2 :(得分:1)
怎么样
+ (BOOL)deletePasswordForService:(NSString *)service account:(NSString *)account;
或删除所有帐户:
NSArray *accounts = [SSKeychain allAccounts];
for (int i = 0; i < accounts.count ; i++) {
[SSKeychain deletePasswordForService:service account:[accounts objectAtIndex:i]];
}
答案 3 :(得分:0)
从代码的外观来看,根本不可能更改帐户(除了为其添加服务密码)。
从Github的讨论来看,似乎没有人对这个功能感兴趣。
我的建议:转到here并发布一个新问题。我认为这应该是可行的,至少他们可以确定是否已经有了当前版本的SSKeyChain。
修改强>
第二个想法,不会删除某个帐户的所有密码使该帐户“不存在”?
答案 4 :(得分:0)
SSKeychainQuery
我找到了删除帐户的方法
/**
Dete keychain items that match the given account, service, and access group.
@param error Populated should an error occur.
@return `YES` if saving was successful, `NO` otherwise.
*/
- (BOOL)deleteItem:(NSError **)error;
但这是deletPassword
使用的方法。所以实际上deleteItem
只删除密码而不删除整个项目
+ (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account error:(NSError *__autoreleasing *)error {
SSKeychainQuery *query = [[SSKeychainQuery alloc] init];
query.service = serviceName;
query.account = account;
return [query deleteItem:error];
}