запись iPhone в KeyChain нет стандартной ошибки - PullRequest
0 голосов
/ 03 марта 2010

Я пытаюсь написать запись в цепочку для ключей, но она завершается ошибкой с кодом возврата -25243, в документации перечислены только «общие» коды ошибок и указывается направление «Открытая группа» для получения справки. , Я скачал документ, но не имею понятия, где искать, документ имеет длину более 1000 страниц и просто отображает список загрузки # define.

Кто-нибудь может помочь?

Ответы [ 4 ]

5 голосов
/ 07 апреля 2012

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

  • Права не включены
  • Права включены, но группа доступа не существует

Чтобы убедиться, что все эти вещи настроены правильно:

  1. Выберите цель приложения в Xcode
  2. Выберите вкладку «Сводка»
  3. В разделе «Права» убедитесь, что установлен флажок «Включить права».
  4. Убедитесь, что в группы доступа цепочки для ключей входит группа, в которую вы пытаетесь написать.
2 голосов
/ 17 февраля 2011

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

Обратите внимание на этот фрагмент из примера GenericKeychain .

#if TARGET_IPHONE_SIMULATOR
        // Ignore the access group if running on the iPhone simulator.
        // 
        // Apps that are built for the simulator aren't signed, so there's no keychain access group
        // for the simulator to check. This means that all apps can see all keychain items when run
        // on the simulator.
        //
        // If a SecItem contains an access group attribute, SecItemAdd and SecItemUpdate on the
        // simulator will return -25243 (errSecNoAccessForItem).
#else           
        [genericPasswordQuery setObject:accessGroup forKey:(id)kSecAttrAccessGroup];
#endif
2 голосов
/ 03 марта 2010

ОК, проблема в том, что я пытался сохранить значение в kSecAttrAccessGroup, изменил его на kSecAttrDescription, и все хорошо

1 голос
/ 09 декабря 2012

Недавно я столкнулся с этой проблемой, оказалось, что у меня несколько учетных записей разработчиков, и Xcode выбрал «неправильный» сертификат разработчика, чтобы подписать мою отладочную сборку. Этот сертификат не принадлежал тому же разработчику, что и идентификатор приложения, поэтому у приложения больше не было доступа к этой группе цепочки для ключей.

Как только я заставил подпись кода использовать правильный сертификат разработчика, ошибка исчезла.

...