Salut tout le monde,
Je travaille sur une appli Android qui doit communiquer avec une base de données Firestore. Pour ce faire, il faut que je m’authentifie en fournissant des crédits Google : il s’agit d’instancier la classe GoogleCredentials
.
La façon de faire la plus simple, c’est d’exécuter le programme sur une machine de Google (en souscrivant au service Google Cloud Compute), mais bien entendu ce n’est absolument pas ce que je veux puisque dans mon cas je réalise une appli Android ! M’enfin, dans ce cas précis, je me contenterais juste d’écrire cette ligne et ça devrait marcher : GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
.
Dans mon cas, je ne peux donc pas faire appel à la ligne précédente. D’autres façons de récupérer un GoogleCredentials
existent :
-
oAuth2, sauf que cette techno doit être utilisée pour connecter les utilisateurs de mon appli aux services de Google. Or moi, je veux connecter seulement mon appli à seulement Firestore.
-
Server to server / Service to Service : c’est la techno que j’essaie d’utiliser. Il s’agit de créer un compte de service, ce que j’ai fait, à l’issue duquel on télécharger un fichier JSON contenant les crédits Google. Du coup je l’ai fait, je l’ai déplacé dans un répertoire de mon appli, et j’essaie actuellement de l’utiliser pour instancier
GoogleCredentials
.
Questions
-
De toutes les technos possibles pour récupérer un
GoogleCredentials
, aucune ne me semble permettre de simplement connecter mon appli Android à Firestore. La "Server to Server / Service to Service" me paraît la plus adaptée, MAIS a) mon appli n’est pas un serveur évidemment, donc déjà c’est chelou et b) le fichier JSON contenant les crédits Google étant stocké dans un répertoire de mon appli, il sera disponible dans l’APK téléchargé par mes utilisateurs : n’est-ce pas dangereux pour la sécurité de ma base de données ??? -
J’ai placé mon fichier JSON dans le répertoire
res
.GoogleCredentials
comporte la méthode suivante :GoogleCredentials credentials = GoogleCredentials.fromStream(FileStream);
. Comment instancier unFileStream
pointant vers mon fichier JSON ? J’ai cherché et il se trouve que la méthodeUri.parse("android.resource://com.your.package/raw/filename");
pourrait être un début de solution. Cependant j’ai aussi trouvé qu’il n’était pas possible de récupérer le chemin vers un fichier dansres
sur le smartphone de l’utilisateur, mais seulement dans la machine de développement…
Merci d’avance pour votre aide.