秘密鍵情報やsecret等の保存は悩ましいところです。
ExpoではSecureStoreという、iOSだと、Keychain Servicesを、AndroidならKeystore Systemをラップした保存手法を提供してくれます。AsyncStoreとほぼ同じ感じで使えるようです。
App.js
実装は以下の通り。特に難しいことはありません。セットしない、deleteした場合はnullが返るようです。
App.js
import React from 'react';
import { StyleSheet, Text, View, Button } from 'react-native';
import { SecureStore } from 'expo';
export default class App extends React.Component {
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Button
title='setItem'
onPress={() => this.handleSetItem()}
/>
<Button
title='getItem'
onPress={() => this.handleGetItem()}
/>
<Button
title='deleteItem'
onPress={() => this.handleDeleteItem()}
/>
</View>
);
}
handleSetItem = async () => {
await SecureStore.setItemAsync('access_key', 'hoge');
alert('setItem');
}
handleGetItem = async () => {
const key = await SecureStore.getItemAsync('access_key');
if (key === null) {
alert('セットされていません。');
} else {
alert(key);
}
}
handleDeleteItem = async () => {
await SecureStore.deleteItemAsync('access_key');
alert('deleteItem');
}
}