我有一个通过OAuth安全性与WebAPI交互的Android应用程序.为了获取访问令牌,我需要在请求的标头中发送OAuth凭证(即客户端ID和客户端密钥).我的问题是,我应该在哪里保留这两个值(客户端ID和客户端密码),以便应用程序在需要时使用它.目前,我刚刚在通话中对其进行了硬编码.将它们保存在strings.xml文件中是否安全?
隐藏在BuildConfigs中
首先,在根目录中创建一个文件apikey.properties,其中包含不同密钥的值:
CONSUMER_KEY=XXXXXXXXXXX
CONSUMER_SECRET=XXXXXXX
为了避免这些密钥出现在您的存储库中,请确保通过添加到您的文件来排除该文件被签入.gitignore:
apikey.properties
接下来,添加此部分以在您的文件中读取该文件app/build.gradle。您还将使用以下定义创建从此文件生成的编译时选项buildConfigField:
def apikeyPropertiesFile = rootProject.file("apikey.properties")
def apikeyProperties = new Properties()
apikeyProperties.load(new FileInputStream(apikeyPropertiesFile))
android {
defaultConfig {
// should correspond to key/value pairs inside the file
buildConfigField("String", "CONSUMER_KEY", apikeyProperties['CONSUMER_KEY'])
buildConfigField("String", "CONSUMER_SECRET", apikeyProperties['CONSUMER_SECRET'])
}
}
Run Code Online (Sandbox Code Playgroud)
BuildConfig现在,您可以使用Gradle 提供的对象在源代码中的任何位置访问这两个字段:
// inside of any of your application's code
String consumerKey = BuildConfig.CONSUMER_KEY;
String consumerSecret = BuildConfig.CONSUMER_SECRET;
Run Code Online (Sandbox Code Playgroud)
J.D*_*.D. -6
请用于SharedPreferences存储安全数据,因为如果任何人对您的应用程序进行逆向工程,他们将获得硬编码字符串。SharedPreferences是您可以存储数据的安全位置。
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |