processwire/google-client-api

适用于 ProcessWire CMS/CMF 的 Google 客户端库。

4.0.0 2020-12-21 15:18 UTC

This package is auto-updated.

Last update: 2024-09-17 20:38:05 UTC


README

此模块管理和简化了 Google 服务 API 与 ProcessWire 之间的认证和设置,并在模块设置中进行处理。该模块还目前通过专用类提供了 Google Sheets 和 Google Calendar 的常见 API 调用,为这些服务提供了比 Google 客户端库更简单的接口。

此软件包还包括 MarkupGoogleCalendar 模块,该模块可用于在您的网站上渲染日历,同时也作为使用 GoogleClientAPI 模块的良好示例。

要求

  • ProcessWire 3.0.123 或更高版本
  • PHP 5.4 或更高版本(推荐使用 PHP 7+)
  • 您要启用 API 的 Google 账户

安装

虽然 Google 有时会在其 API 界面中更改一些内容,但其本质保持不变。自 2015 年以来,这些说明已经过 3 次迭代,以保持与 Google 变更的一致性,当前版本的最后更新日期为 2019 年 7 月 22 日。如果您在 Google 方面遇到重大差异,请告知我们。

步骤 A:安装模块文件

  • 下载模块的 ZIP 文件,解压并将文件放置在名为 /site/modules/GoogleClientAPI/ 的新目录中

  • 登录到您的 ProcessWire 管理员并转到:模块 > 刷新。

  • 点击 GoogleClientAPI 模块旁边的“安装”(该模块应出现在“站点”选项卡上)。

  • 您现在应该处于模块的配置屏幕,在此处停留以进行下一步。

步骤 B:安装 Google 客户端库

  • 在模块配置屏幕上,您现在应该看到一个复选框,提供安装 Google PHP API 客户端库的选项。

  • 继续安装库,通过勾选复选框并点击提交,或者下载并按照提供的位置自行安装。

  • 请注意,库相当大,所以安装可能需要几分钟。

步骤 C:在 Google 控制台中启用 API

  1. 在新标签页或新窗口中打开浏览器,转到 Google 控制台 并登录(如果尚未登录)。可能会要求您同意服务条款——勾选复选框并继续。

  2. 现在您将进入“Google API 和服务”仪表板。它将要求您选择一个项目。很可能您还没有,因此点击 “创建”

  3. 现在您将进入“新项目”屏幕。可选地修改项目名称或位置,或仅接受默认值。然后点击 “创建” 按钮继续。

    在我的情况下,我为项目名称输入了 "ProcessWire 网站服务",并将位置保留为默认值。

  4. 现在您将回到仪表板,并且将有一个链接说 “启用 API 和服务”,继续点击该链接。

  5. 下一屏幕将列出所有 Google API 和服务。点击您想要启用的 API/服务。

  6. 在您点击的服务屏幕上,点击 “启用” 按钮以启用该服务的 API。

步骤 D:在 Google 控制台中创建凭证

  1. 启用您选择的API服务后,下一屏将显示一个通知,说明

    使用此API,您可能需要凭据。单击“创建凭据”开始。

    按照提示,点击“创建凭据”按钮,并填写它显示给您的以下输入

    • 您正在使用哪个API? —— 选择您要使用的API。
    • 您将从哪里调用API? —— 选择“Web服务器”。
    • 您将访问什么数据? —— 选择“用户数据”。

    然后点击“我需要哪些凭据?”按钮。

  2. 点击上面的按钮后,可能会弹出一个框,显示“设置OAuth同意屏幕”,在这种情况下,您应点击“设置同意屏幕”按钮。“OAuth同意屏幕”有几个输入,但您如果不想填写,可以不填写。但我确实建议完成以下内容:

    • 应用程序名称:您可以在这里输入任何您想输入的内容,但在我这个例子中,我输入了:“ProcessWire Google 客户端API”。

    • 应用程序徽标:您可以留空。

    • 支持电子邮件:您可以接受默认值。

    • Google API的作用域:保持原样,您将在ProcessWire中完成这部分。

    • 授权域名:输入您的网站运行的域名并按回车键。如果它将在其他域名上运行,也输入它们,并按回车键。

    接下来3个输入只是形式上的。只有您会看到它们,所以它们实际上不适用于我们的项目,但我们仍然需要填写。您可以在网站上输入您想要的任何URL。

    • 应用程序主页:输入您网站的首页URL。这可能是您第一个“授权域名”,但在前面加上http://https://

    • 应用程序隐私政策链接:输入您网站的隐私政策链接,或者一些
      其他网站URL,如果您没有隐私政策。只有您会看到它。

    • 应用程序服务条款:输入一个URL或留空。

    完成上述输入后,点击“保存”按钮。

  3. 下一屏将显示一个新的“创建凭据”按钮。点击该按钮,将显示一个下拉菜单,选择“OAuth客户端ID”。完成屏幕上的以下输入

    • 应用程序类型:选择“Web应用程序”

    • 名称:接受默认的“Web客户端1”,或输入您想要的任何内容。

    • 授权JavaScript源:您可以留空。

    • 授权重定向URI:要获取此值,您需要切换窗口/标签回到ProcessWire管理界面:模块 > 配置 > GoogleClientAPI。顶部将有一个通知,显示如下

      Your “Authorized redirect URI” (for Google) is:  
      https://domain.com/processwire/module/edit?name=GoogleClientAPI
      

      将屏幕上出现的通知中的URL复制并粘贴到Google屏幕上的“授权重定向URI”输入框中,并按回车键。

    • 如果您看到一个“刷新”按钮,请点击它。

  4. 填写了上述所有输入后,您应该会看到一个“创建OAuth客户端ID”按钮,请继续点击它以继续,并转到以下步骤E。

步骤E:从Google下载凭据JSON文件

  1. 如果下一屏显示“下载凭据”,请点击现在的“下载”按钮。它将下载一个client_id.json文件(或一些其他命名的JSON文件)到您的电脑上。

    如果您在这里看不到下载选项,没关系,您将在下一步看到它。

  2. 点击“完成”按钮。您现在将进入主“凭证”屏幕,其中列出了您的OAuth客户端。

  3. 如果您尚未下载JSON文件,请点击此屏幕上“OAuth 2.0客户端ID”表格右侧出现的下载图标以下载文件。注意文件的位置,或者现在就将其加载到文本编辑器中。我们将在下面的步骤F中稍后返回到此文件。

  4. 您已经完成了Google控制台的操作,但请保持登录状态。下一步我们将回到ProcessWire管理界面。

步骤F:使用Google验证ProcessWire

请注意:在此步骤中,尽管您将在ProcessWire中操作,但请确保您仍然使用步骤3中使用的Google账户登录。

  1. 现在我们将填写ProcessWire侧的设置。您需要进入ProcessWire管理后台中的GoogleClientAPI模块设置:模块 > 配置 > GoogleClientAPI。在模块设置中完成以下输入

    • 应用程序名称:输入一个应用程序名称。您可能希望与您在Google中输入的相同,例如“ProcessWire Google Client API”,或者您所决定的任何名称。

    • 作用域(每行一个):在此字段中,您需要粘贴一个或多个作用域(它们看起来像URL)。作用域指定了您希望为启用的API设置的权限。确定您将使用的作用域并将其粘贴到该字段中。您可能只有一个作用域。有关所有可用作用域的详细信息,请参阅查看所有可用作用域。作用域的示例包括

      https://www.googleapis.com/auth/calendar.readonly 用于对日历的只读访问。
      https://www.googleapis.com/auth/spreadsheets 用于对Google Sheets电子表格的完全访问。
      https://www.googleapis.com/auth/gmail.send 用于代表您发送电子邮件。

    • 认证配置/客户端密钥JSON:在文本编辑器中打开/加载您之前下载的JSON文件。全选并复制,然后将其粘贴到该字段中。

    点击“提交”按钮以保存模块设置。

  2. 在上一步骤中点击提交按钮后,您现在应该会进入一个Google屏幕,要求您授权访问请求的服务。确认所有访问。

    • 根据您请求的作用域,它可能会告诉您您的应用程序来自未经验证的开发者,并鼓励您退出。它甚至可能看起来像Google错误屏幕,但请放心,一切正常——找到隐藏在底部的继续链接。除非您不确定是否信任自己,否则请按照它要求的提示继续前进以启用访问。

    • 确认访问后,它将带您返回到ProcessWire中的GoogleClientAPI模块配置屏幕。

  3. 您的GoogleClientAPI模块现已配置并准备好测试!

标记Google日历模块

此附加功能模块使用Google数据渲染日历。此模块演示了使用并需要安装和配置的GoogleClientAPI模块,在使用此模块之前必须进行此操作。它需要GoogleClientAPI中的以下作用域:https://www.googleapis.com/auth/calendar.readonly

查看_mgc-event.php文件,这是处理输出标记的文件。您应该将其复制到/site/templates/_mgc-event.php并按需修改。如果您不将其复制到您的/site/templates/目录,则它将使用模块目录中的默认版本。

请注意,所有渲染方法默认情况下将输出缓存1小时。您可以通过调整模块的$cacheExpire属性来更改此设置。

用法

<?php
$cal = $modules->get('MarkupGoogleCalendar');
$cal->calendarID = 'your-calendar-id'; 
$cal->cacheExpire = 3600; // how many seconds to cache output (default=3600)
$cal->maxResults = 100; // maximum number of results to render (default=100)

// use any one of the following
echo $cal->renderMonth(); // render events for this month
echo $cal->renderMonth($month, $year); // render events for given month
echo $cal->renderDay(); // render events for today
echo $cal->renderDay($day, $month, $year); // render events for given day
echo $cal->renderUpcoming(10); // render next 10 upcoming events
echo $cal->renderRange($timeMin, $timeMax); // render events between given min/max dates/times

更多详细信息和使用选项可以在上述方法中每个的phpdoc注释中找到。