目录

接入钥匙环服务

简介

钥匙环服务(Keyring)为您提供在Android应用、快应用和Web应用之间共享登录凭据的能力。

当前快应用中支持了钥匙环服务,调用钥匙环服务,您可以基于用户登录凭据,让应用快速获取登录信息,简化登录流程,降低登录成本。

准入条件

接入华为钥匙环服务前,需要完成如下准备工作:

接入指引

[h2]判断是否支持钥匙环服务

调用keyring.getProvider接口,判断手机是否支持钥匙环服务,如果返回空字符串,表示不支持此服务,此时请勿调用其他接口,否则将抛出异常;如果返回服务商代号,则可使用其他接口。

[h2]保存用户的凭证信息

调用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'
    })
  }
})

[h2]删除用户凭证信息

调用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'
    })
  }
})

[h2]查询用户凭证信息

调用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'
    })
  }
})

[h2]获取目标凭证的敏感信息

先调用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'
    })
  }
})

隐私声明和合规使用指南

隐私声明和合规使用指南请参考《SDK隐私声明》和《SDK合规使用指南》