我应该在Android中存储我的令牌?

时间:2017-01-19 22:17:42

标签: android

在我的应用程序中,我正在存储我的令牌以访问 strings.xml 中的Web服务,但现在我想提交它(Github)而没有令牌值。

1 个答案:

答案 0 :(得分:3)

您似乎专注于版本控制问题。如果在res/values/strings.xml中使用该令牌对您有效,那么您可以将令牌值放在gradle.properties中(例如,作为WEB_SERVICE_TOKEN),并使用{从Gradle生成相应的字符串资源{1}}:

resValue

这将创建一个名为android { defaultConfig { resValue "string", "whatever_your_string_resource_is_called", WEB_SERVICE_TOKEN } } 的字符串资源,其中包含您在whatever_your_string_resource_is_called中提供的值WEB_SERVICE_TOKEN。然后,从您的版本控制系统中排除gradle.properties(例如,通过gradle.properties)。

更大的问题是:您的Web服务令牌是否真的存在于您的APK中?毕竟,you are leaking that token to anyone who wants to get it。根据应用程序的性质以及您尝试访问的此Web服务的性质,您可以尝试使用字符串资源,例如:

  • 不使用应用中的Web服务,而是使用您自己的Web服务(例如,用户必须登录的服务)

  • 使用应用中的Web服务,但安全地下载令牌并将其存储在internal storage上(因此只有那些根设备的用户才能获得令牌)