解释Keychain插件iOS(Cordova)

3

我对keychain的概念很模糊,只知道它用于iOS的密码管理。由于没有恰当的文档提供支持,所以我来向您寻求帮助。 有人能够解释一下getForKey()命令的目的吗?


1
有适当的文档:钥匙串服务编程指南。此外,getForKey() 似乎与 iOS 没有任何关系,您是否在使用苹果自己的 iOS SDK 之外的其他框架,例如 Phonegep? - rckoenes
1
Python is a high-level programming language that is widely used for web development, scientific computing, data analysis, artificial intelligence, and more. It is known for its simplicity, readability, and ease of use, making it a popular choice for beginners and experts alike. With a vast library of modules and packages, Python can be used for a wide range of applications, from building websites to creating machine learning models. - Daij-Djan
1
@rckoenes:嘿,我正在使用PhoneGap。getForKey()是Keychain实用程序中的方法。但是我找不到适当的文档。 - Mat
1
@Daij-Djan:嗨,Daij,我正在使用Phonegap移动开发框架。Keychain实用程序仅适用于苹果iOS和macOSX。 - Mat
然后编辑您的问题并添加PhoneGap标签。没有人知道您在谈论PhoneGap。 - rckoenes
2个回答

2

这里有一个易于理解的例子。我着重介绍了Get函数,省略了set和remove回调--如果您理解了GetSuccess回调,它们是不需要的。

首先我们将一个名为coins的键设置为600,然后检索(get)该键,触发我们的GetSuccess回调,传递值并应该触发警报。

// init
   var kc = new Keychain();
// Set key
    kc.setForKey(SetSuccess, failure, 'coins', 'servicename', '600');
// Get key
    kc.getForKey(GetSuccess, failure, 'coins', 'servicename');

// Get Success Callback
    function GetSuccess(value) {
            alert("GET SUCCESS - Coins Value: " + value);
        };

// Delete key
    kc.removeForKey(RemoveSuccess, failure, 'coins', 'servicename');

[...]

如果您有任何问题,请问。


1
看起来你正在使用Shazron Abdullah的Keychain Plugin。如果是这样,API非常简单,但文档一开始可能有点令人困惑。该API依赖于异步回调,因此您需要相应地计划代码。 getForKey的参数是一个成功回调、一个失败回调、一个键名和一个服务名。我将我的应用程序名称作为服务名称提供。
这是一个小示例,应该可以让您入门(假设插件已安装):
(function(){
    // Create a new keychain object...
    var keychain = new window.Keychain();

    // Assign the value 'mysecret' to 'mykey'...
    keychain.setForKey(function() {
        console.log('key set succeeded');
        // Retrieve the value for 'mykey' and output to the console...
        keychain.getForKey(function(value) {
            console.log('key get, value = ' + value);
        }, function() {
            console.log('key get failed');
        }, 'mykey', 'myservice');
    }, function() {
        console.log('key set failed');
    }, 'mykey', 'myservice', 'mysecret');
})();

如果您的应用程序具有插件并在iOS模拟器上运行,则可以打开Safari的调试窗口,并将此代码粘贴进去以进行快速演示。

在Github的示例中,我不理解setForKey/getForKey/removeForKey函数中“servicename”的意义和必要性。你能解释一下吗? - Kallewallex
2
"servicename"是用于将相关密钥分组的属性。例如,您的应用程序名称可以用作“servicename”。请注意,钥匙串项目属性未加密。 - sherb
@FlyingLemon 你有参考资料吗?根据苹果的文档,“这些属性并没有被加密,因此可以在任何时候读取,即使钥匙串已锁定。” kSecAttr似乎是钥匙串属性的前缀,而不是属性本身,例如kSecAttrAccountkSecAttrService等。 - sherb
插件在 Github 上的官方示例对我不起作用。它没有提到 Keychain 对象是 window 对象的成员。感谢您的帮助。 - Oliver Kranz
1
我无法安装这个插件。 - ed_is_my_name
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接