J'utilise l'API Google Drive avec mon application Rails. L'API fonctionne correctement. J'ai le fichier client_secret.json suivant:
{
"type": "service_account",
"project_id": "gobirdie-landing-page",
"private_key_id": "xxxxx",
"private_key": "-----BEGIN PRIVATE KEY----- xxxxx -----END PRIVATE KEY-----\n",
"client_email": "[email protected]",
"client_id": "xxxxxxxxx",
"auth_uri": "xxxxxx",
"token_uri": "xxxxxxx": "xxxxxxxx": "xxxxxxxxx"
}
qui est appelé dans mon contrôleur
@session = GoogleDrive::Session.from_service_account_key("client_secret.json")
Avec cette configuration sans problème, j'arrive à utiliser l'API. Cependant, je voudrais stocker mon JSON dans le fichier .env comme:
CLIENT_SECRET = "{
"type": "service_account",
"project_id": "gobirdie-landing-page",
"private_key_id": "xxxxx",
"private_key": "-----BEGIN PRIVATE KEY----- xxxxx -----END PRIVATE KEY-----\n",
"client_email": "[email protected]",
"client_id": "xxxxxxxxx",
"auth_uri": "xxxxxx",
"token_uri": "xxxxxxx": "xxxxxxxx": "xxxxxxxxx"
}"
Et appelez-le dans le contrôleur de cette façon
@session = GoogleDrive::Session.from_service_account_key(ENV['CLIENT_SECRET'])
Ou de cette façon
@session = GoogleDrive::Session.from_service_account_key(JSON.parse(ENV['CLIENT_SECRET']))
Mais aucune des méthodes ne fonctionne. Ma question est donc: "Est-il possible de stocker un fichier JSON dans une variable ENV?"
Oui. Il est possible de stocker le fichier json dans une variable. Cependant, un petit changement est nécessaire:
\\\"type\\\": \\\"service_account\\\",
Faites cela pour chaque double citation à l'intérieur des accolades bouclées de json.