我正在努力了解Google googleapiclient
模块身份验证的文档。
基本上,我想使用[与我的帐户相关的令牌]而非服务帐户连接到Google Cloud Platform(GCP)API。但似乎没有一个简单而简单的文档。
有人可以用示例Python代码指导我,如何做到这一点?
只是为了说明,这是我的代码的一小部分:
gcp_credentials = service_account.ServiceAccountCredentials \
.from_json_keyfile_name('credentials/gce_token.json', scopes=[const.GCP_SCOPE])
gcp_http = gcp_credentials.authorize(http=build_http())
crm_service = discovery.build('cloudresourcemanager', 'v1', http=gcp_http)
crm_projects_api = crm_service.projects()
projects_list = crm_projects_api.list().execute()['projects']
project_id_list = [p['projectId'] for p in projects_list]
随意提出澄清问题。
答案 0 :(得分:0)
访问Google Cloud Platform API时,Google建议您仅为测试目的设置API密钥,并建议为生产使用设置服务帐户。使用服务帐户选项,可以为服务帐户生成密钥,该密钥可以允许使用该密钥的应用程序承担服务帐户的身份(因此它具有相关的范围/权限)。
创建API密钥(仅用于测试):
1)从Google API控制台获取OAuth 2.0客户端凭据。
API&服务>证书> API密钥
创建服务帐户密钥(用于生产):
1)导航到' API&服务' > '证书'
2)点击'创建凭据' > '服务帐户密钥'
3)您可以选择已存在的服务帐户,也可以创建新的服务帐户(出于这些步骤的目的,我们将选择“创建新的服务帐户&#39;”)< / p>
4)选择一个允许访问所需存储空间的角色,例如“存储管理员”和“存储管理员”。它允许对存储桶进行读写操作。
5)选择JSON或P12(建议使用JSON),然后点击&#39;创建&#39;。服务帐户的密钥文件将下载到本地计算机。
应用程序使用服务帐户密钥进行身份验证的最简单方法是使用GOOGLE_APPLICATION_CREDENTIALS
环境变量。
您需要通过指向服务帐户密钥文件(创建服务帐户时下载的.json文件)来设置此环境变量。例如:
$ export GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
如果您不想使用ADC(应用程序默认凭据)变量,并且想要在Python代码中指向服务帐户文件,您可以使用这样的东西,假设您想要使用存储API:
def myfunction():
from google.cloud import storage
# Use service account credentials by specifying the private key
# file.
storage_client = storage.Client.from_service_account_json(
'service_account.json')
# Make an authenticated API request
buckets = list(storage_client.list_buckets())
print(buckets)