开始使用

本文档提供了开始使用该库所需的所有基本信息。 内容涵盖库概念,展示了各种用例的示例,并提供了更多信息的链接。

设置

您需要先完成一些设置步骤,然后才能使用此库:

  1. 如果您还没有 Google 帐号,请注册
  2. 如果您从未创建过 Google API 控制台项目,请参阅“管理项目”页面并在 Google API 控制台中创建项目。
  3. 安装您要使用的 NuGet 软件包。

身份验证与授权

了解 API 身份验证和授权处理方式的基础知识非常重要。 所有 API 调用都必须使用简单访问或已获授权的访问(定义见下文)。 许多 API 方法都需要已获授权的访问权限,但有些方法可以使用其中任意一种。有些 API 方法的行为方式可能会有所不同,具体取决于您是使用简单访问还是已获授权的访问。要确定适当的访问权限类型,请参阅 API 的方法文档。

1. 简单的 API 访问(API 密钥)

这些 API 调用不会访问任何私有用户数据。您的应用必须针对属于您的 Google API 控制台项目的应用进行身份验证。为了进行会计核算,必须进行此项衡量。

API 密钥:如需对应用进行身份验证,请在 API 控制台项目中使用 API 密钥。 应用进行的每个简单访问调用都必须包含此密钥。

2. 已获授权的 API 访问 (OAuth 2.0)

这些 API 调用可以访问用户私人数据。拥有私有数据访问权限的用户必须先向您的应用授予访问权限,然后才能调用它们。因此,您的应用必须进行身份验证,用户必须向应用授予访问权限,并且用户必须经过身份验证才能授予访问权限。所有这些都可以通过 OAuth 2.0 和相应的库来实现。

范围:每个 API 都会定义一个或多个范围,以声明一组允许的操作。例如,API 可能具有只读范围和读写范围。当您的应用请求访问用户数据时,该请求必须包含一个或多个范围。用户需要批准您的应用请求的访问权限范围。

刷新和访问令牌:当用户向您的应用授予访问权限时,OAuth 2.0 授权服务器会向您的应用提供刷新和访问令牌。这些令牌仅在所请求的范围内有效。您的应用使用访问令牌来授权 API 调用。访问令牌会过期,但刷新令牌不会过期。 您的应用可以使用刷新令牌来获取新的访问令牌。

客户端 ID 和客户端密钥:这些字符串是应用的唯一标识,并用于获取令牌。 它们是在 API 控制台上为您的项目创建的。有三种类型的客户端 ID,因此请务必为您的应用获取正确的类型:

示例

本部分提供了在未经授权的情况下使用简单 API 的示例。如需详细了解授权调用,请参阅 .NET 的 OAuth 2.0 页面

简单的 API 示例

本示例为命令行应用使用简单的 API 访问权限。它会调用 Google Discovery API 来列出所有 Google API。

设置示例

获取您的简易 API 密钥。如需查找应用的 API 密钥,请执行以下操作:

  1. 打开 API 控制台中的“凭据”页面
  2. 此 API 支持两种类型的凭据。 创建适合您的项目的凭据:
    • OAuth 2.0:当您的应用请求非公开用户数据时,该应用必须将 OAuth 2.0 令牌随请求一起发送。要获取令牌,您的应用应先发送客户端 ID(也可能需要发送客户端密钥)。您可以为网页应用、服务帐号或已安装应用生成 OAuth 2.0 凭据。

      如需了解详情,请参阅 OAuth 2.0 文档

    • API 密钥:未提供 OAuth 2.0 令牌的请求必须发送 API 密钥。 该密钥用于标识您的项目,并提供 API 访问权限、配额和报告。

      此 API 支持多种类型的 API 密钥限制。如果您需要的 API 密钥尚不存在,可以在控制台中通过点击创建凭据 > API 密钥来创建 API 密钥。您可以先对密钥设定相关限制,然后再在生产环境中使用密钥,方法是点击限制密钥,然后选择限制之一。

为保障 API 密钥的安全,请遵循以安全的方式使用 API 密钥的最佳做法

代码示例

using System;
using System.Threading.Tasks;

using Google.Apis.Discovery.v1;
using Google.Apis.Discovery.v1.Data;
using Google.Apis.Services;

namespace Discovery.ListAPIs
{
    /// <summary>
    /// This example uses the discovery API to list all APIs in the discovery repository.
    /// https://developers.google.com/discovery/v1/using.
    /// <summary>
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Console.WriteLine("Discovery API Sample");
            Console.WriteLine("====================");
            try
            {
                new Program().Run().Wait();
            }
            catch (AggregateException ex)
            {
                foreach (var e in ex.InnerExceptions)
                {
                    Console.WriteLine("ERROR: " + e.Message);
                }
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }

        private async Task Run()
        {
            // Create the service.
            var service = new DiscoveryService(new BaseClientService.Initializer
                {
                    ApplicationName = "Discovery Sample",
                    ApiKey="[YOUR_API_KEY_HERE]",
                });

            // Run the request.
            Console.WriteLine("Executing a list request...");
            var result = await service.Apis.List().ExecuteAsync();

            // Display the results.
            if (result.Items != null)
            {
                foreach (DirectoryList.ItemsData api in result.Items)
                {
                    Console.WriteLine(api.Id + " - " + api.Title);
                }
            }
        }
    }
}

API 密钥使用提示:

  • 如需使用特定服务,您必须添加对该服务的引用。例如,如果您想使用 Tasks API,则应安装其 NuGet 软件包 Google.Apis.Tasks.v1
  • 如需创建服务实例,只需调用其构造函数即可。例如:new TasksService(new BaseClientService.Initializer {...});"
  • 服务的所有方法都位于服务对象本身的个别资源上。Discovery 服务具有一项 Apis 资源,其中包含 List 方法。当您调用 service.Apis.List(..) 时,系统会返回定位此方法的请求对象。
    如需执行请求,请对请求调用 Execute()ExecuteAsyc() 方法。
  • 使用 BaseClientService.Initializer 实例上的 ApiKey 属性设置 API 密钥。

查找 API 的相关信息

支持的 API 页面列出了可以使用此库访问的所有 API 以及指向文档的链接。

您还可以使用 API Explorer 浏览 API,列出可用方法,甚至还可以尝试在浏览器中调用 API。