欢迎访问宙启技术站
智能推送

Python中使用GoogleCredentials进行GoogleAPI权限管理的方法

发布时间:2023-12-16 05:43:17

使用GoogleCredentials可以帮助我们在Python中进行Google API的权限管理。GoogleCredentials提供了一种方便的方式来设置和验证访问Google云服务的凭据。

在使用GoogleCredentials之前,我们需要先安装google-auth库,可以使用以下命令进行安装:

pip install google-auth

接下来,我们可以通过以下几种方式之一来创建GoogleCredentials对象:

1. 使用环境变量:如果已经设置了GOOGLE_APPLICATION_CREDENTIALS环境变量,其值为包含密钥信息的JSON文件路径,我们可以使用以下代码将其转换为GoogleCredentials对象:

from google.auth import compute_engine

credentials = compute_engine.Credentials()

2. 使用JSON文件:如果没有设置GOOGLE_APPLICATION_CREDENTIALS环境变量,我们可以直接在代码中指定JSON文件的路径来创建GoogleCredentials对象:

from google.auth import credentials
import json

json_key = json.loads('''
{
  "type": "service_account",
  "project_id": "my-project-id",
  "private_key_id": "my-private-key-id",
  "private_key": "-----BEGIN PRIVATE KEY-----
my-private-key
-----END PRIVATE KEY-----
",
  "client_email": "service-account-email",
  "client_id": "client-id",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account-email"
}
''')

credentials = credentials.Credentials.from_service_account_info(json_key)

3. 使用用户凭据文件:如果您需要使用用户的凭据(例如Google帐号的用户名和密码),您可以使用以下代码创建GoogleCredentials对象:

from google.auth import credentials

credentials = credentials.Credentials.from_user_credentials()

一旦我们创建了GoogleCredentials对象,我们可以使用它来进行Google API的身份验证和授权:

from googleapiclient.discovery import build

credentials = # 创建GoogleCredentials对象

# 创建API服务
service = build('api-name', 'api-version', credentials=credentials)

# 调用API方法
request = service.api_method().execute()

在上面的代码中,我们首先使用GoogleCredentials对象来创建API服务,然后使用服务的方法来调用所需的API方法。请确保将'api-name'和'api-version'替换为实际的API名称和版本。

下面是一个完整的例子,演示了如何使用GoogleCredentials进行Google Sheets API的权限管理:

from google.oauth2 import service_account
import googleapiclient.discovery

# 使用服务账户的JSON密钥文件创建GoogleCredentials对象
key_file = 'path/to/service-account-key.json'
credentials = service_account.Credentials.from_service_account_file(key_file, scopes=['https://www.googleapis.com/auth/spreadsheets'])

# 创建Sheets API服务
service = googleapiclient.discovery.build('sheets', 'v4', credentials=credentials)

# 读取Google Sheet数据
spreadsheet_id = 'your-spreadsheet-id'
range_name = 'Sheet1!A1:B2'
response = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range_name).execute()
values = response.get('values', [])

# 打印结果
if not values:
    print('No data found.')
else:
    print('Name, Value:')
    for row in values:
        print(f'{row[0]}, {row[1]}')

在上面的例子中,我们使用服务账户的JSON密钥文件创建了GoogleCredentials对象,并指定了需要的权限范围(在这种情况下是读取Google Sheets数据)。然后,我们使用此凭据创建了Sheets API服务,并使用该服务调用了values().get()方法来读取Google Sheet中的数据。最后,我们将结果打印出来。

总结来说,使用GoogleCredentials可以帮助我们在Python中方便地进行Google API的权限管理。通过适当的方式创建GoogleCredentials对象,并将其传递给API服务,我们可以轻松地进行Google云服务的访问和授权。