使用个人帐户进行googleapiclient身份验证?

时间:2018-03-23 07:14:41

标签: python python-3.x google-cloud-platform google-compute-engine

我正在努力了解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]

随意提出澄清问题。

1 个答案:

答案 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)