Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 在Expo(React Native)应用程序中使用Firebase_React Native_Expo_Api Key - Fatal编程技术网

React native 在Expo(React Native)应用程序中使用Firebase

React native 在Expo(React Native)应用程序中使用Firebase,react-native,expo,api-key,React Native,Expo,Api Key,我正在考虑为我的新手机应用程序Firebase,这是一个世博会应用程序。Expo的团队对此做了一个很好的指导() 阅读本教程后,我可以看到推荐的方法是将API凭据(密钥、项目ID等)直接放入应用程序中,并以这种方式初始化客户端: import * as firebase from 'firebase'; // Initialize Firebase const firebaseConfig = { apiKey: "<YOUR-API-KEY>", authDomain:

我正在考虑为我的新手机应用程序Firebase,这是一个世博会应用程序。Expo的团队对此做了一个很好的指导()

阅读本教程后,我可以看到推荐的方法是将API凭据(密钥、项目ID等)直接放入应用程序中,并以这种方式初始化客户端:

import * as firebase from 'firebase';

// Initialize Firebase
const firebaseConfig = {
  apiKey: "<YOUR-API-KEY>",
  authDomain: "<YOUR-AUTH-DOMAIN>",
  databaseURL: "<YOUR-DATABASE-URL>",
  storageBucket: "<YOUR-STORAGE-BUCKET>"
};

firebase.initializeApp(firebaseConfig);
从“firebase”导入*作为firebase;
//初始化Firebase
常量firebaseConfig={
apiKey:“,
authDomain:“”,
数据库URL:“”,
存储桶:“
};
firebase.initializeApp(firebaseConfig);

问题是:在RN(Expo)项目中放置API密钥安全吗?

我也在使用firebase,还有很多其他需要API密钥的第三方sdk。我将其存储在后端,当应用程序初始化(即挂载)时,我调用一个API到后端,该API提供所有API密钥,并将它们存储在各自的异步存储中,因此每当我需要特定的API密钥时,我只需执行AsyncStorage.getItem('API_密钥'),而且它既安全又无法跟踪,因为它来自后端。显然,在后端,您希望将它们存储为env变量。所以我建议你遵循这一点

对你来说,就这么做吧

let firebaseApiKey = AsyncStorage.getItem('firebaseKey');

// Initialize Firebase
const firebaseConfig = {
  apiKey: firebaseApiKey,
  authDomain: "<YOUR-AUTH-DOMAIN>",
  databaseURL: "<YOUR-DATABASE-URL>",
  storageBucket: "<YOUR-STORAGE-BUCKET>"
};

firebase.initializeApp(firebaseConfig);
让firebaseApiKey=AsyncStorage.getItem('firebaseKey');
//初始化Firebase
常量firebaseConfig={
apiKey:firebaseApiKey,
authDomain:“”,
数据库URL:“”,
存储桶:“
};
firebase.initializeApp(firebaseConfig);

我建议您使用Visual Studio App Center之类的服务来定义env变量,然后在代码中引用这些变量。在构建过程中,VS App Center将适合您在代码中使用它的地方的值


因此,敏感值甚至从未触及您的代码库。这是我能想到的最安全的解决方案。

将敏感数据存储在AsyncStorage中是否安全?AsyncStorage基本上是指将API密钥存储到每个用户的设备中?这些用户当然可以读取您的API密钥()。然而,我的问题是“将API键直接放入RN代码中是否安全?”不幸的是,这不是答案。这是一个解决方案。但是当VSAC构建和编译应用程序时,它确实会在应用程序包中注入密钥,所以我想聪明的人可以阅读它。