繁体   English   中英

SSKeychain删除帐户

[英]SSKeychain delete account

我想从我的SSKeychain中删除一个帐户。 我只有删除密码的方法,但是该帐户仍在钥匙串中。

有没有办法删除帐户或清除SSKeychain?

我用来删除帐户的内容:
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

清除钥匙串的最简单方法是这样的:

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];

}

怎么样

+ (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]];
}

从代码的外观来看,似乎根本不可能更改帐户(除了为其添加服务密码)。

从Github上的讨论来看,似乎没有人对此功能感兴趣。

我的建议:转到此处并发布有关此问题的新期刊。 我认为这应该可行,至少他们可以肯定地告诉您当前版本的SSKeyChain是否已经存在。

编辑

再三考虑,是否不删除某个帐户的所有密码会使该帐户“不存在”?

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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM