Python 快速入门

快速入门介绍了如何设置和运行调用 Google Workspace API 的应用。

Google Workspace 快速入门使用 API 客户端库来处理身份验证和授权流程的某些详细信息。我们建议您为自己的应用使用客户端库。本快速入门使用适用于测试环境的简化身份验证方法。对于生产环境,我们建议您先了解身份验证和授权,然后再选择适合您应用的访问凭据

创建一个向 Google 表单 API 发出请求的 Python 命令行应用。

目标

  • 设置环境。
  • 安装客户端库。
  • 设置示例。
  • 运行示例。

前提条件

如需运行本快速入门,您需要满足以下前提条件:

  • Google 帐号。

设置您的环境

如需完成本快速入门,请设置您的环境。

启用 API

在使用 Google API 之前,您需要在 Google Cloud 项目中启用它们。您可以在单个 Google Cloud 项目中启用一个或多个 API。
  • 在 Google Cloud 控制台中,启用 Google Form API。

    启用 API

如果您要使用新的 Google Cloud 项目完成本快速入门,请配置 OAuth 权限请求页面,并将您自己添加为测试用户。如果您已为自己的 Cloud 项目完成此步骤,请跳到下一部分。

  1. 在 Google Cloud 控制台中,依次点击“菜单”图标 > API 和服务 > OAuth 同意屏幕

    转到 OAuth 同意屏幕

  2. 为您的应用选择用户类型,然后点击创建
  3. 填写应用注册表单,然后点击保存并继续
  4. 目前,您可以跳过添加范围的步骤,点击 Save and Continue(保存并继续)。 将来,当您创建要在 Google Workspace 组织外部使用的应用时,您必须添加并验证该应用所需的授权范围。

  5. 如果您选择了外部作为用户类型,请添加测试用户:
    1. 测试用户下,点击添加用户
    2. 输入您的电子邮件地址和任何其他获得授权的测试用户,然后点击保存并继续
  6. 查看您的应用注册摘要。如要进行更改,请点击修改。如果应用注册看起来正常,请点击 Back to Dashboard

为桌面应用授权凭据

如需在您的应用中对最终用户进行身份验证并访问用户数据,您需要创建一个或多个 OAuth 2.0 客户端 ID。客户端 ID 用于向 Google 的 OAuth 服务器标识单个应用。如果您的应用在多个平台上运行,您必须为每个平台创建单独的客户端 ID。
  1. 在 Google Cloud 控制台中,依次点击“菜单”图标 > API 和服务 > 凭据

    进入“凭据”页面

  2. 依次点击创建凭据 > OAuth 客户端 ID
  3. 依次点击应用类型 > 桌面应用
  4. 名称字段中,输入凭据的名称。此名称只会显示在 Google Cloud 控制台中。
  5. 点击创建。系统会显示 OAuth 客户端已创建屏幕,其中显示了您的新客户端 ID 和客户端密钥。
  6. 点击 OK。新创建的凭据会显示在 OAuth 2.0 客户端 ID 下方。
  7. 将下载的 JSON 文件另存为 credentials.json,然后将该文件移动到工作目录。

安装 Google 客户端库

  • 安装 Python 版 Google 客户端库:

    pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
    

配置示例

  1. 在您的工作目录中,创建一个名为 quickstart.py 的文件。
  2. quickstart.py 中添加以下代码:

    forms/quickstart/quickstart.py
    from apiclient import discovery
    from httplib2 import Http
    from oauth2client import client, file, tools
    
    SCOPES = "https://www.googleapis.com/auth/forms.body"
    DISCOVERY_DOC = "https://forms.googleapis.com/$discovery/rest?version=v1"
    
    store = file.Storage("token.json")
    creds = None
    if not creds or creds.invalid:
      flow = client.flow_from_clientsecrets("client_secrets.json", SCOPES)
      creds = tools.run_flow(flow, store)
    
    form_service = discovery.build(
        "forms",
        "v1",
        http=creds.authorize(Http()),
        discoveryServiceUrl=DISCOVERY_DOC,
        static_discovery=False,
    )
    
    # Request body for creating a form
    NEW_FORM = {
        "info": {
            "title": "Quickstart form",
        }
    }
    
    # Request body to add a multiple-choice question
    NEW_QUESTION = {
        "requests": [
            {
                "createItem": {
                    "item": {
                        "title": (
                            "In what year did the United States land a mission on"
                            " the moon?"
                        ),
                        "questionItem": {
                            "question": {
                                "required": True,
                                "choiceQuestion": {
                                    "type": "RADIO",
                                    "options": [
                                        {"value": "1965"},
                                        {"value": "1967"},
                                        {"value": "1969"},
                                        {"value": "1971"},
                                    ],
                                    "shuffle": True,
                                },
                            }
                        },
                    },
                    "location": {"index": 0},
                }
            }
        ]
    }
    
    # Creates the initial form
    result = form_service.forms().create(body=NEW_FORM).execute()
    
    # Adds the question to the form
    question_setting = (
        form_service.forms()
        .batchUpdate(formId=result["formId"], body=NEW_QUESTION)
        .execute()
    )
    
    # Prints the result to show the question has been added
    get_result = form_service.forms().get(formId=result["formId"]).execute()
    print(get_result)
    

运行示例

  1. 在您的工作目录中,构建并运行示例:

    python3 quickstart.py
    
  1. 首次运行示例时,系统会提示您授予访问权限:
    1. 如果您尚未登录 Google 帐号,请在系统提示时登录。如果您已登录多个帐号,请选择一个帐号用于授权。
    2. 点击接受

    您的 Python 应用运行并调用 Google Form API。

    授权信息存储在文件系统中,因此当您下次运行示例代码时,系统不会提示您授权。

后续步骤