RailsアプリケーションでGoogle Drive APIを使用しています。APIは正常に動作しています。次のclient_secret.jsonファイルがあります。
{
"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"
}
これは私のコントローラーで呼び出されます
@session = GoogleDrive::Session.from_service_account_key("client_secret.json")
この構成で問題なく、なんとかAPIを使用できました。ただし、次のようにJSONを.envファイルに保存します。
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"
}"
このようにコントローラで呼び出します
@session = GoogleDrive::Session.from_service_account_key(ENV['CLIENT_SECRET'])
またはこのように
@session = GoogleDrive::Session.from_service_account_key(JSON.parse(ENV['CLIENT_SECRET']))
しかし、どちらの方法も機能していません。だから私の質問は:「JSONファイルをENV変数に格納することは可能ですか?」
はい。 jsonファイルを変数に格納することが可能です。ただし、必要な小さな変更が1つあります。
\\\"type\\\": \\\"service_account\\\",
Jsonの中括弧内のすべての二重引用符に対してこれを行います。