问题
I am using Google Drive API with my Rails application. The API is working fine. I have the following client_secret.json file:
{
"type": "service_account",
"project_id": "gobirdie-landing-page",
"private_key_id": "xxxxx",
"private_key": "-----BEGIN PRIVATE KEY----- xxxxx -----END PRIVATE KEY-----\n",
"client_email": "xxxxxxx@gobirdie-landing-page.iam.gserviceaccount.com",
"client_id": "xxxxxxxxx",
"auth_uri": "xxxxxx",
"token_uri": "xxxxxxx": "xxxxxxxx": "xxxxxxxxx"
}
which is called in my controller
@session = GoogleDrive::Session.from_service_account_key("client_secret.json")
With this configuration no problem, I manage to use the API. However, I would like to store my JSON in the .env file like:
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": "xxxxxxx@gobirdie-landing-page.iam.gserviceaccount.com",
"client_id": "xxxxxxxxx",
"auth_uri": "xxxxxx",
"token_uri": "xxxxxxx": "xxxxxxxx": "xxxxxxxxx"
}"
And call it in the controller in this way
@session = GoogleDrive::Session.from_service_account_key(ENV['CLIENT_SECRET'])
Or in this way
@session = GoogleDrive::Session.from_service_account_key(JSON.parse(ENV['CLIENT_SECRET']))
But neither methods are working. So my question is : "Is it possible to store JSON file in an ENV variable ?"
回答1:
Convert the JSON object to string and store it in the ENV
You can use JSON.dump
to convert JSON object to string
and then in your controller JSON.parse(ENV['CLIENT_SECRET'])
Alternatively
you can create a google_session.rb
inside initializers
folder
$google_session = GoogleDrive::Session.from_service_account_key(
# config goes here
)
and in your controller you will have access to $google_session
global variable
回答2:
Yes. It is possible to store json file in variable. However there is one small change needed :
\\\"type\\\": \\\"service_account\\\",
Do this for every double quote inside the curly braces of json.
来源:https://stackoverflow.com/questions/56277661/is-it-possible-to-store-a-json-file-to-an-env-variable-with-dotenv