{
"type": "service_account",
"project_id": "project_id",
"private_key_id": "private_key_id",
"private_key": "-----BEGIN PRIVATE KEY-----\n",
"client_email": "email",
"client_id": "id",
"auth_uri": "uri_auth",
"token_uri": "token_urin",
"auth_provider_x509_cert_url": "auth_provider_x509_cert_url",
"client_x509_cert_url": "client_x509_cert_url"
}
I tried encoding and decoding the JSON but it didn't work
I even tried using /// in place of " "
So I am using sheets-api. What I want to achieve is loading the path-for-json-file from .env variable
scope=['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/spreadsheets'
]
credentials = ServiceAccountCredentials.from_json_keyfile_name(r"path-for-json-file", scope)
client = gspread.authorize(credentials)
env variableimport json
import base64
import os
from dotenv import load_dotenv, find_dotenv
service_key = {
"type": "service_account",
"project_id": "project_id",
"private_key_id": "private_key_id",
"private_key": "-----BEGIN PRIVATE KEY-----\n",
"client_email": "email",
"client_id": "id",
"auth_uri": "uri_auth",
"token_uri": "token_urin",
"auth_provider_x509_cert_url": "auth_provider_x509_cert_url",
"client_x509_cert_url": "client_x509_cert_url"
}
# convert json to a string
service_key = json.dumps(service_key)
# encode service key
encoded_service_key = base64.b64encode(service_key.encode('utf-8'))
print(encoded_service_key)
# b'many_characters_here'
.env file, add an environment variable SERVICE_ACCOUNT_KEY with the value of encoded_service_key:SERVICE_ACCOUNT_KEY = b'a_long_string'
# get the value of `SERVICE_ACCOUNT_KEY`environment variable
load_dotenv(find_dotenv())
encoded_key = os.getenv("SERVICE_ACCOUNT_KEY")
# remove the first two chars and the last char in the key
encoded_key = str(encoded_key)[2:-1]
# decode
original_service_key= json.loads(base64.b64decode(encoded_key).decode('utf-8'))
print(original_service_key['private_key_id'])
# private_key_id
# credentials = ServiceAccountCredentials.from_json_keyfile_name(
# original_service_key, scope)
# client = gspread.authorize(credentials)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With