6

我有多个key, value,我不知道如何将多个存储key, value在不同的地方。

以下代码是否有另一种使用react-native-keychain包的方法

await AsyncStorage.setItem('pincode',  '12345');
await AsyncStorage.setItem('userid',  '@user8383928');
await AsyncStorage.setItem('contacts',  JSON.stringify(contacts_array_of_object));

以上每个都key, value saving可能在不同的函数和不同的时间调用。

问题在于react-native-keychain只有两个属性username, password

async () => {
  const username = 'zuck';
  const password = 'poniesRgr8';

  // Store the credentials
  await Keychain.setGenericPassword(username, password);

  try {
    // Retrieve the credentials
    const credentials = await Keychain.getGenericPassword();
    if (credentials) {
      console.log('Credentials successfully loaded for user ' + credentials.username);
    } else {
      console.log('No credentials stored');
    }
  } catch (error) {
    console.log('Keychain couldn\'t be accessed!', error);
  }
  await Keychain.resetGenericPassword();
}
4

2 回答 2

5

1) 设置InternetCredentials

setInternetCredentials(server, username, password)接受服务器作为第一个参数。服务器可以是任何字符串。

await setInternetCredentials('pincode', 'pincode', '123456');
await setInternetCredentials('contacts', 'contacts', JSON.stringify(contacts_array_of_object));

然后,您可以使用从钥匙串中获取它

await getInternetCredentials('pincode');

2) setGenericPassword 和服务值

setGenericPassword(username, password, [{ accessControl, accessible, accessGroup, service, securityLevel }])您必须指定服务值,这是用于在内部存储中存储机密的名称

await setGenericPassword('pincode', '123456', [{ service = 'pincode' }]);

3) JSON.strigify 与 setGenericPassword

每次你想写一些东西时,你会先读取密钥库,然后使用对象传播将它与一个新值一起存储回来。

于 2020-05-21T13:52:38.617 回答
2

将它们全部放在一个对象中,然后将其另存为JSON.stringify({...})

于 2020-02-23T20:13:21.943 回答