processwire / google-client-api
适用于 ProcessWire CMS/CMF 的 Google 客户端库。
Requires
- ext-ctype: *
- ext-json: *
- google/apiclient: >=2.2.2
- hari/pw-module: ~1.0
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
-
在新标签页或新窗口中打开浏览器,转到 Google 控制台 并登录(如果尚未登录)。可能会要求您同意服务条款——勾选复选框并继续。
-
现在您将进入“Google API 和服务”仪表板。它将要求您选择一个项目。很可能您还没有,因此点击 “创建”。
-
现在您将进入“新项目”屏幕。可选地修改项目名称或位置,或仅接受默认值。然后点击 “创建” 按钮继续。
在我的情况下,我为项目名称输入了 "ProcessWire 网站服务",并将位置保留为默认值。
-
现在您将回到仪表板,并且将有一个链接说 “启用 API 和服务”,继续点击该链接。
-
下一屏幕将列出所有 Google API 和服务。点击您想要启用的 API/服务。
-
在您点击的服务屏幕上,点击 “启用” 按钮以启用该服务的 API。
步骤 D:在 Google 控制台中创建凭证
-
启用您选择的API服务后,下一屏将显示一个通知,说明
使用此API,您可能需要凭据。单击“创建凭据”开始。
按照提示,点击“创建凭据”按钮,并填写它显示给您的以下输入
- 您正在使用哪个API? —— 选择您要使用的API。
- 您将从哪里调用API? —— 选择“Web服务器”。
- 您将访问什么数据? —— 选择“用户数据”。
然后点击“我需要哪些凭据?”按钮。
-
点击上面的按钮后,可能会弹出一个框,显示“设置OAuth同意屏幕”,在这种情况下,您应点击“设置同意屏幕”按钮。“OAuth同意屏幕”有几个输入,但您如果不想填写,可以不填写。但我确实建议完成以下内容:
-
应用程序名称:您可以在这里输入任何您想输入的内容,但在我这个例子中,我输入了:“ProcessWire Google 客户端API”。
-
应用程序徽标:您可以留空。
-
支持电子邮件:您可以接受默认值。
-
Google API的作用域:保持原样,您将在ProcessWire中完成这部分。
-
授权域名:输入您的网站运行的域名并按回车键。如果它将在其他域名上运行,也输入它们,并按回车键。
接下来3个输入只是形式上的。只有您会看到它们,所以它们实际上不适用于我们的项目,但我们仍然需要填写。您可以在网站上输入您想要的任何URL。
-
应用程序主页:输入您网站的首页URL。这可能是您第一个“授权域名”,但在前面加上
http://
或https://
。 -
应用程序隐私政策链接:输入您网站的隐私政策链接,或者一些
其他网站URL,如果您没有隐私政策。只有您会看到它。 -
应用程序服务条款:输入一个URL或留空。
完成上述输入后,点击“保存”按钮。
-
-
下一屏将显示一个新的“创建凭据”按钮。点击该按钮,将显示一个下拉菜单,选择“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”输入框中,并按回车键。
-
如果您看到一个“刷新”按钮,请点击它。
-
-
填写了上述所有输入后,您应该会看到一个“创建OAuth客户端ID”按钮,请继续点击它以继续,并转到以下步骤E。
步骤E:从Google下载凭据JSON文件
-
如果下一屏显示“下载凭据”,请点击现在的“下载”按钮。它将下载一个
client_id.json
文件(或一些其他命名的JSON文件)到您的电脑上。如果您在这里看不到下载选项,没关系,您将在下一步看到它。
-
点击“完成”按钮。您现在将进入主“凭证”屏幕,其中列出了您的OAuth客户端。
-
如果您尚未下载JSON文件,请点击此屏幕上“OAuth 2.0客户端ID”表格右侧出现的下载图标以下载文件。注意文件的位置,或者现在就将其加载到文本编辑器中。我们将在下面的步骤F中稍后返回到此文件。
-
您已经完成了Google控制台的操作,但请保持登录状态。下一步我们将回到ProcessWire管理界面。
步骤F:使用Google验证ProcessWire
请注意:在此步骤中,尽管您将在ProcessWire中操作,但请确保您仍然使用步骤3中使用的Google账户登录。
-
现在我们将填写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文件。全选并复制,然后将其粘贴到该字段中。
点击“提交”按钮以保存模块设置。
-
-
在上一步骤中点击提交按钮后,您现在应该会进入一个Google屏幕,要求您授权访问请求的服务。确认所有访问。
-
根据您请求的作用域,它可能会告诉您您的应用程序来自未经验证的开发者,并鼓励您退出。它甚至可能看起来像Google错误屏幕,但请放心,一切正常——找到隐藏在底部的继续链接。除非您不确定是否信任自己,否则请按照它要求的提示继续前进以启用访问。
-
确认访问后,它将带您返回到ProcessWire中的GoogleClientAPI模块配置屏幕。
-
-
您的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注释中找到。