Какао интерфейс для MacOS X брелок - PullRequest
16 голосов
/ 26 марта 2012

У меня есть немного кода Mac, который необходим для хранения, доступа и обновления паролей для подключения пользователей с помощью веб-API.Правильным местом для размещения этой информации должен быть брелок Mac, но, кажется, нет интерфейса с какао (см. этот ответ ) - это все еще правильно?

I 'Мы просмотрели документацию Apple Keychain , и API кажется невероятно неуклюжим.Я могу хранить его и извлекать записи, но что-то более сложное, кажется, требует много размышлений о том, что может пойти не так (см. этот список кодов ошибок ).

Есть лилучший интерфейс для цепочки для ключей Mac, кроме слогана через код C?Самое близкое, что я получил, это EMKeychain , но, похоже, нужно немного поработать (например, не нужно обрабатывать код ошибки, кроме того, что он выплевывает на консоль).

Ответы [ 3 ]

10 голосов
/ 26 марта 2012

Вы должны взглянуть на SSKeychain . Отлично работает, классный код.

0 голосов
/ 12 июля 2018

Поздно на вечеринку, как всегда, но я могу порекомендовать UICKeyChainStore .

0 голосов
/ 28 июля 2017

Слишком поздний ответ, но было бы хорошо для будущей помощи.Ниже я сделал, чтобы сохранить пароль в связке ключей Mac

#pragma -mark Password save in Keychain

-(NSURLProtectionSpace *)createProtectionSpaceForBasicAuthentication{

    NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc]
                                             initWithHost:@"http://yourURLHere"
                                             port:1804  //add Your port here
                                             protocol:@"http" //can be pass as nil 
                                             realm:nil
                                             authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
    return protectionSpace;
}

-(void )createCredentialForUsername:(NSString *)username Password:(NSString *)password{

    NSURLCredential *credentialObject;
    credentialObject = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
    [[NSURLCredentialStorage sharedCredentialStorage] setCredential:credentialObject forProtectionSpace:[self createProtectionSpaceForBasicAuthentication]];
}

Для сохранения пароля

- (IBAction)saveButtonClicked:(id)sender {
    [self createCredentialForUsername:@"User_Name" Password:@"Your_Pass"];
}

для получения пароля

NSURLCredential *credential;
NSDictionary *credentials;
credentials = [[NSURLCredentialStorage sharedCredentialStorage] credentialsForProtectionSpace:[self createProtectionSpaceForBasicAuthentication]];
credential = [credentials.objectEnumerator nextObject];
    NSLog(@"Username: %@ and password %@", credential.user, credential.password);

Когда мы запустимприложение для получения пароля, мы получим приглашение пользователя для доступа к цепочке для ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...