钥匙环服务(Keyring)为您提供在Android应用、快应用和Web应用之间共享登录凭据的能力。
当前快应用中支持了钥匙环服务,调用钥匙环服务,您可以基于用户登录凭据,让应用快速获取登录信息,简化登录流程,降低登录成本。
调用keyring.getProvider接口,判断手机是否支持钥匙环服务,如果返回空字符串,表示不支持此服务,此时请勿调用其他接口,否则将抛出异常;如果返回服务商代号,则可使用其他接口。
调用keyring.saveCredential接口,保存用户的凭证信息。
保存新增数据:
keyring.saveCredential({
type: 0,
syncable: "false",
userAuth: "true",
username: "Zhang San",
newContent: "123456",
success: function (msg) {
prompt.showToast({
message: msg,
duration: 2000,
gravity: 'bottom'
})
},
fail: function (code,msg) {
prompt.showToast({
message: code + msg,
duration: 2000,
gravity: 'bottom'
})
}
}) 保存更新数据:
keyring.saveCredential({
type: 0,
syncable: false,
userAuth: true,
username: "Zhang San",
newContent: "12345678",
sharedWith: [{
certHash: "${Android签名指纹}",
name: "${Android应用名称}",
packageName: "${Android应用包名}",
type: "android_app"
},
{
name: "${网址名称}",
domain: "${网址域名}",
type: "web"
}],
owner: {
certHash: "3a:25:d7:19:53:9b:39:b9:67:48:c4:85:86:bb:d7:f1:dd:53:e5:e9:29:12:77:0e:f2:5f:4e:7e:9a:b3:7f:cc",
name: "Keyring_Test",
packageName: "com.huawei.keyring",
type: "quick_app"
},
success: function (msg) {
prompt.showToast({
message: msg,
duration: 2000,
gravity: 'bottom'
})
},
fail: function (msg) {
prompt.showToast({
message: msg,
duration: 2000,
gravity: 'bottom'
})
}
}) 调用keyring.deleteCredential接口,删除本应用之前保存的用户凭证信息。
keyring.deleteCredential({
owner: {
certHash: "3a:25:d7:19:53:9b:39:b9:67:48:c4:85:86:bb:d7:f1:dd:53:e5:e9:29:12:77:0e:f2:5f:4e:7e:9a:b3:7f:cc",
name: "Keyring_Test",
packageName: "com.huawei.keyring",
type: "quick_app"
},
"type": 0,
"username": "Zhang San",
success: function (msg) {
prompt.showToast({
message: msg,
duration: 2000,
gravity: 'bottom'
})
},
fail: function (code, msg) {
prompt.showToast({
message: code + msg,
duration: 2000,
gravity: 'bottom'
})
}
}) 调用keyring.findCredential接口,查询目标应用中用户已登录的凭证信息。
keyring.findCredential({
trustedApps: [{
type: 'quick_app',
name: 'AndroidAppIdentity',
packageName: 'com.huawei.hms.keyring.test',
certHash: "3C:99:C3:69:27:75:46:FD:E4:14:82:C0:C1:FB:75:54:94:A7:A8:63:CA:9C:A7:BB:4B:9D:48:C4:04:86:9A:93"
}],
success: function (data) {
credential = data // 返回的数据列表
prompt.showToast({
message: data,
duration: 2000,
gravity: 'bottom'
})
},
fail: function (code, msg) {
prompt.showToast({
message: code + msg,
duration: 2000,
gravity: 'bottom'
})
}
}) 先调用keyring.findCredential接口查询目标应用的凭证列表,再调用keyring.getCredentialContent接口,获取目标凭证的敏感信息。
keyring.getCredentialContent({
owner: {
certHash: "3C:99:C3:69:27:75:46:FD:E4:14:82:C0:C1:FB:75:54:94:A7:A8:63:CA:9C:A7:BB:4B:9D:48:C4:04:86:9A:93",
name: "AndroidAppIdentity",
packageName: "com.huawei.hms.keyring.test",
type: "quick_app"
},
type: 0,
username: "Zhang San",
success: function (data) {
prompt.showToast({
message: data, // 返回的敏感信息内容
duration: 2000,
gravity: 'bottom'
})
},
fail: function (msg, code) {
prompt.showToast({
message: code + msg,
duration: 2000,
gravity: 'bottom'
})
}
})