相关疑难解决方法(0)

尝试使用 SecItemAdd() 将项目添加到钥匙串会导致 -50

当我尝试使用命令行 Swift 应用程序中的参数将项目添加到 macOS 钥匙串时SecItemAdd()kSecAttrSynchronizable出现错误-50 (One or more parameters passed to the function were not valid)。如果我删除它,它就能正常工作kSecAttrSynchronizable。我尝试过使用KeychainAccess,也尝试过手动执行(使用macOS提供的钥匙串服务API),结果是一样的。

import Foundation
let account = "username"
let password = "password".data(using: String.Encoding.utf8)!

var query: [String: Any] = [kSecClass as String: kSecClassInternetPassword,
                        kSecAttrAccount as String: account,
                        kSecAttrServer as String: "nabeelomer.me",
                        kSecAttrSynchronizable as String: kCFBooleanTrue,
                        kSecValueData as String: password]

let status = SecItemAdd(query as CFDictionary, nil)
print(status)
Run Code Online (Sandbox Code Playgroud)

应用程序是否需要未记录的许可?

斯威夫特 4.0、macOS 10.13.3、Xcode 9.1

macos command-line swift

5
推荐指数
1
解决办法
1069
查看次数

SecCopyErrorMessageString在swift中给出"使用未解析的标识符"

尝试使用SecCopyErrorMessageString来解释errorCode.在swift中:

    var result: OSStatus
    result = SecItemAdd(query as CFDictionary, nil);


    if result != errSecSuccess {
    let errorDescription = SecCopyErrorMessageString(result,nil)
   //     NSLog("Keychain Error: %@", errorDescription)
Run Code Online (Sandbox Code Playgroud)

"未解析的标识符"的错误从"SecCopyError ..."开始

keychain ios swift

4
推荐指数
1
解决办法
2522
查看次数

标签 统计

swift ×2

command-line ×1

ios ×1

keychain ×1

macos ×1