Est-il un moyen sûr de gérer les clés API?
Je suis en utilisant un API au sein de mon application. Je gère actuellement la clé API à partir d'une interface java
public interface APIContract {
//The API KEY MUST NOT BE PUBLISH. It is possible to generate a new one for free from www.themoviedb.org
//Remove before commit !!!
String API_KEY = "abcdefghijklmnopqrstuvwxyz";
/...
}
Ce faire le travail. Je peux accéder à la clé à l'aide de APIContract.API_KEY
, mais comme vous pouvez le voir dans les commentaires ce n'est pas sûr si j'utilise git et un dépôt public (je ne suis pas supposer pour publier cette clé).
Voici donc ma question : est-il possible de déplacer cette clé dans un autre endroit qui je peux facilement accéder à partir de mon application, mais qui ne sera pas engagée ?
J'ai trouvé ce fil qui utilisent gradle pour stocker la clé, mais j'ai besoin de commettre la build.gradle
fichier afin de ne pas faire le travail.
Ce que quelqu'un sait comment résoudre ce problème ? Je n'ai pas trouvé de problème similaire dans stackoverflow mais peut-être que j'ai raté quelque chose
MODIFIER
J'aime l'idée de passer la clé à l'extérieur d'un code java parce que d'autres personnes (peut-être non techniques (les gens) peuvent facilement gérer leurs propres clés. Je pensais à l'aide d'un gradle fichier comme settings.gradle
.
- Que faire si vous mettez dans un document distinct (statique) de la classe, retirez la clé, de commettre, ajouter une clé et d'ajouter "ne pas suivre" sur la classe?
- Sûr, mais il va être difficile pour les gens de l'extérieur pour gérer leurs clés (voir edit). Je pensais à quelque chose de vraiment accessible et facile à modifier (comme dans le répertoire de racine)
- Pourquoi serait-il difficile? Ils ont juste ajouter que touche une fois et c'est tout.
- Double Possible de les Meilleures Pratiques pour le stockage privé clés API Android
Vous devez vous connecter pour publier un commentaire.
Ici est une autre façon:
Place la clé API dans un fichier accessible à la construction de la machine/serveur, nous allons l'appeler:
Avec le contenu:
Vous pouvez maintenant accéder en utilisant le `BuildConfig' gradle objet. Modifier votre code pour cela:
Ensuite dans votre construction.gradle, ajouter quelque chose comme ceci:
Et aussi ajouter ceci:
Vous pouvez déplacer le répertoire de l'API de localisation, comme vous pouvez le dire, de sorte qu'il n'est pas une partie de votre pension. Bien sûr, il aura de système de fichiers de dépendances pour la compilation... qui vous pouvez avoir une liste de configuration dans un CI/CD de l'environnement (peut-être un outil comme Jenkins) pour répliquer les fichiers de compilation, d'une salle de pensions, à des fins de sauvegarde.
def getMyApiKey(String property)
fonction dans leduild.gradle
?1. Magasin de clés api dans un fichier xml
Mettre le fichier xml "api_keys.xml" dans le répertoire "res/values/".
api_keys.xml
utilisation de l'api clés dans le code java
2. Magasin de clés API avec l'aide de Gradle et la gradle.fichier de propriétés
Example_0
Example_1
Ajoutez la ligne suivante à [USER_HOME]/.gradle/gradle.propriétés
Pour Windows OS, un exemple pour Denis utilisateur:
gradle.propriétés
Ajoutez le code suivant à la construction.gradle fichier
construire.gradle
utilisation de l'api clés dans le code java
3. Magasin de clés API avec l'aide de gradle et la variable système path
Example_0
Ajouter un nouveau système variable de CHEMIN d'accès THE_MOVIE_DB_API_TOKEN="XXXXX":
Pour Windows OS:
Ajoutez le code suivant à la construction.gradle fichier
construire.gradle
utilisation de l'API clés dans le code java
Lien vers mon résumé sur github
gradle.properties
fichier essentiellement cache les valeurs? J'imagine que je serais encore faut explicitement de ne pas inclure ce fichier dans mon.gitignore
fichier (en supposant que je suis en utilisant Git). Est-ce exact? Je note aussi que j'ai compréhension minimale de Gradle et comment tous les fichiers sont liés. Toute réflexion est apprécié!gradle.properties
fichier sera stocké dans le référentiel de votre application vous devez inclure ce fichier dans votre.gitignore
. Dans ce post, il décrit stocker les propriétés local sur votre machine .gradle dossier dans le répertoire de l'utilisateur.Vous pouvez ajouter la clé de la gradle.les propriétés de fichier ou de le passer comme un argument
.gitignore
mais je ne vais pas être en mesure de l'utiliser pour stocker d'autres propriétésJe les ai mis sur le mondial
gradle.properties
fichier sur le dev de la machine ou serveur ci. De cette façon ne fait pas partie de votre projet afin que vous ne devriez pas vous soucier de vérifier dans votre repo, mais est facilement accessible à partir de votre gradle fichiers.Mondial
gradle.properties
fichier doit être situé à l'intérieur de˜/.gradle
sur Mac par exemple - btw, vous devez la créer si elle n'existe pas.Ensuite, sur votre construire.gradle fichier vous pouvez faire référence à ces propriétés et, par exemple, exposer comme buildConfigFields en utilisant le même nom que vous avez utilisé dans votre
gradle.properties
fichierEnsuite sur votre Java/Kotlin code vous pouvez y accéder en tant que
BuildConfig.API_KEY