У меня есть приложение iOS, которое регистрируется пользователем и затем аутентифицирует этого пользователя с помощью appKey
. Метод делегата didReceiveAuthenticationChallenge
на NSURLConnection
достаточен для предоставления имени пользователя/пароля NSURLCredential
. Однако у меня возникли проблемы с созданием NSURLCredential
только с appKey
(всего один экземпляр данных аутентификации, а не два). Есть ли способ предоставить данные аутентификации на сервере с NSURLConnection
только с ключом?NSURLCredential Authentication только с одним ключом
Следующая curl
запрос отлично работает лишь предоставляя appKey
, пароль:
curl -u <app key>: -H "Accept: application/json" https://dev.sitename.com/api/v1/webpage -v
Это как я переводил выше часть cURL
аутентификации Objective-C:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
// Authenticate the user with AppKey based on the credentials provided
if ([challenge previousFailureCount] == 0) {
NSURLCredential *credential = [NSURLCredential credentialWithUser:[keychainItem objectForKey:@"APP KEY"] password:nil persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
}
Это должно работать, но каждый раз, когда я пытаюсь, аутентификация терпит неудачу. Как вы можете видеть, я установил параметр password
в nil
. Я также попытался заполнить оба параметра. Ничто не работает.
Любые идеи о том, как передать только один параметр на сервер, используя NSURLConnection
? Есть ли способ получить информацию об ошибке из метода делегата didReceiveAuthenticationChallenge
(я знаю didReceiveResponse
)?
Повторяя ваш вопрос, я увидел «Я также попробовал заполнить оба параметра. Ничего похожего не работает ». Вы уже пытались« @ »«? » –
Спасибо за ответ! Я пробовал это, но это не сработало. Кроме того, я считаю, что' @ "" 'равнозначно' nil '. –
Жаль, что это не сработало. И нет, [' nil' - это не то же самое, что '@" "') (http://stackoverflow.com/questions/4283690/objective-c-whats-the-difference -between-null-nil-and). Пробовали ли вы протоколировать HTTP-ответ, отправленный вашим приложением (с помощью [Charles] (http://www.charlesproxy.com/) или что-то подобное), чтобы узнать, является ли его клиент или сервер проблема? –