使用 google api php client 获取及提交数据

安装

  1. 需要一个google 账号
  2. 需要创建一个 google api project, 创建项目
  3. 安装类库
  4. 一个 laravel 项目

授权

理解 api 认证 和 如何认证是非常重要的. 所有的 API 或者是简易访问或者认证访问. 大多数 API 调用都需要经过认证. 这些需要差看相关文档.

简单 API 访问

这些API调用不会访问任何私有用户数据。您的应用程序必须将自己身份验证为属于您的Google API控制台项目的应用程序。这是衡量项目使用情况以进行统计目的所必需的。

API key 是用来认证身份的重要依据, 没一个 简单 API 认证的请求都需要携带 key.

认证 API 访问(Oauth2.0)

这些API调用访问私有用户数据。在您可以调用它们之前,有权访问私有数据的用户必须授予您的应用程序访问权限。因此,必须对您的应用程序进行身份验证,用户必须为您的应用程序授予访问权限,并且必须对用户进行身份验证才能授予该访问权限。所有这一切都是通过 OAuth 2.0 和为其编写的库来完成的。

几个重要概念:

Scope

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

refresh and access tokens

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

client ID and client secret

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

  • Web application client IDs
  • Installed application client IDs
  • Service Account client IDs

Building and calling a service

这一节描述了如和运行 一个具体的 API 服务, 向服务端发起请求, 并获取回复.

Build the client object

客户端对象是库中类和配置的主要容器。


$client = new Google_Client();
$client->setApplicationName("My Application");
$client->setDeveloperKey("MY_SIMPLE_API_KEY");

Build the service object

通过查询来调用服务以服务特定对象。这些是通过构造服务对象并将Google_Client实例传递给它来创建的。Google_Client包含服务所需的IO,身份验证和其他类,并且该服务会通知客户端在对用户进行身份验证时使用哪些范围来提供默认值。

$service = new Google_Service_Books($client);
Calling an API

每个 API 都提供资源和方法,通常在链中。这些可以通过$ service-> resource-> method(args)形式从服务对象访问。大多数方法需要一些参数,然后接受包含可选参数的数组的最终参数。例如,使用 Google Books API,我们可以调用列出与特定字符串匹配的卷,并添加可选的过滤器参数。

$optParams = array('filter' => 'free-ebooks');
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
  
处理结果

有两种主要类型的响应 - 项目和项目集合。每个都可以作为对象或数组进行访问。集合实现了Iterator接口,因此可以在foreach和其他构造中使用。

foreach ($results as $item) {
  echo $item['volumeInfo']['title'], "<br /> \n";
}

使用 Oauth2.0 处理 服务端应用

适用于PHP的Google API客户端库支持使用OAuth 2.0进行服务器到服务器的交互,例如Web应用程序和Google服务之间的交互。对于此方案,您需要一个服务帐户,该帐户属于您的应用程序而不是单个最终用户。您的应用程序代表服务帐户调用 Google API,因此用户不会直接参与。此方案有时称为“两条腿 OAuth ”或“2LO”。(相关术语“三足OAuth”是指您的应用程序代表最终用户调用Google API并且有时需要用户同意的情况。)

如果您有Google Apps域 - 例如,如果您使用G Suite,则Google Apps域管理员可以授权应用程序代表Google Apps域中的用户访问用户数据。例如,使用Google Calendar API将事件添加到Google Apps域中所有用户的日历的应用程序将使用服务帐户代表用户访问Google Calendar API。授权服务帐户代表域中的用户访问数据有时被称为“将域范围授权”委托给服务帐户。

概览

要支持服务器到服务器的交互,请首先在API控制台中为项目创建服务帐户。如果您要访问 Google Apps 域中用户的用户数据,请将域范围内的访问权委托给该服务帐户。然后,您的应用程序准备使用服务帐户的凭据进行授权的API调用,以从 OAuth 2.0 auth服务器请求访问令牌。最后,您的应用程序可以使用访问令牌来调用Google API。

创建一个服务账号

服务帐户的凭证包括生成的唯一电子邮件地址,客户端ID和至少一个公钥/私钥对。如果您的应用程序在 Google App Engine 上运行,则在您创建项目时会自动设置服务帐户。如果您的应用程序未在 Google App Engine 或 Google Compute Engine 上运行,则必须在 Google API 控制台中获取这些凭据。要生成服务帐户凭据,或查看已生成的公用凭证,请执行以下操作:

  1. Service accounts 页面.选择项目.
  2. 创建一个服务账户
  3. 在 Create service account 弹窗, 输入服务账户名称, 选择装设新的私钥.点击创建.

您的新公钥/私钥对会生成并下载到您的计算机上;它是此密钥的唯一副本。您有责任安全地存储它。

您可以随时返回 API 控制台查看客户端 ID,电子邮件地址和公钥指纹,或生成其他公钥/私钥对。有关 API 控制台中服务帐户凭据的更多详细信息,请参阅API控制台帮助文件中的服务帐户。记下服务帐户的电子邮件地址,并将服务帐户的私钥文件存储在应用程序可访问的位置。您的应用程序需要它们进行授权的API调用。

需要在 webmaster 应用中增加账户权限