yidas/google-apiclient-helper

Google APIs 客户端助手 - 使用 PHP 轻松访问 Google API

1.1.0 2018-09-15 07:29 UTC

This package is auto-updated.

Last update: 2024-09-15 21:18:38 UTC


README

Google API 客户端助手


Google APIs 客户端助手 - 使用 PHP 轻松访问 Google API

Latest Stable Version Latest Unstable Version License

特性

  • 轻松开发和管理工作 Google API 应用程序

  • 支持 Service SDK 文档

  • 每个服务的简单用法

此助手基于 google-api-php-clientgoogle-api-php-client-services

概要

演示

$client = \yidas\google\apiHelper\Client::setClient()
    ->setApplicationName('Google API')
    ->setAuthConfig('/path/google_api_secret.json')
    ->setRedirectUri("http://{$_SERVER['HTTP_HOST']}" . dirname($_SERVER['PHP_SELF'])
    ->setAccessToken($accessToken)
    ->getClient();

if ($accessToken = ClientHelper::refreshAccessToken()) {
    // saveAccessToken($accessToken)
}

// People Service uses Google_Client from Client helper above
$contacts = \yidas\google\apiHelper\services\People::getSimpleContacts();

要求

此库需要以下内容

  • PHP 5.4.0+
  • google/apiclient 2.0+

安装

在您的项目中运行 Composer

composer require yidas/google-apiclient-helper

然后您可以在 Composer 加载后根据您的 PHP 框架调用它

require __DIR__ . '/vendor/autoload.php';

use yidas\google\apiHelper\Client;

GOOGLE 客户端

配置

有多种方式通过助手设置 Google_Client

配置数组方法

配置键引用 Google_Client 的方法。例如,authConfig 引用 Google_Client->setAuthConfig()

$client = \yidas\google\apiHelper\Client::setClient([
        'applicationName' => 'Google API',
        'authConfig' => '/path/google_api_secret.json',
        'redirectUri' => "http://{$_SERVER['HTTP_HOST']}" . dirname($_SERVER['PHP_SELF'],
        ])
    ->getClient();

配置链方法

方法引用与 Google_Client 相同的方法名称。例如,setAuthConfig() 引用 Google_Client->setAuthConfig()

$client = \yidas\google\apiHelper\Client::setClient()
    ->setApplicationName('Google API')
    ->setAuthConfig('/path/google_api_secret.json')
    ->setRedirectUri("http://{$_SERVER['HTTP_HOST']}" . dirname($_SERVER['PHP_SELF'])
    ->getClient();

封装方法

$client = new Google_Client();
$client->setAuthConfig('/path/google_api_secret.json');
\yidas\google\apiHelper\Client::setClient($client);

将 Google_Client 封装到 Helper 中后,Helper 会共享相同的 Google_Client 对象。

AccessToken 使用

refreshAccessToken()

简单的方式获取刷新的访问令牌或跳过过期的访问令牌

public static array|false refreshAccessToken()

示例

$client = \yidas\google\apiHelper\Client::setClient()
    ->setApplicationName('Google API')
    ->setAuthConfig('/path/google_api_secret.json')
    ->setRedirectUri("http://{$_SERVER['HTTP_HOST']}" . dirname($_SERVER['PHP_SELF'])
    ->setAccessToken($accessToken)
    ->getClient();

// Simple way to get refreshed access token or false expired to skip
if ($accessToken = ClientHelper::refreshAccessToken()) {
    // saveAccessToken($accessToken)
}

助手处理设置 setAccessType('offline') & setApprovalPrompt('force') 以刷新令牌。

verifyAccessToken()

验证 access_token。此方法将验证当前的 access_token,如果未提供,将通过 Google API 验证。

public static array|false verifyAccessToken(string $accessToken=null)

verifyScopes()

通过 access_token 验证 tokenInfo 的作用域。此方法将验证当前的 access_token,如果未提供,将通过 Google API 验证。

public static array|false verifyScopes(array $scopes, string $accessToken=null)

示例

$result = \yidas\google\apiHelper\Client::verifyScopes([
    'https://www.googleapis.com/auth/userinfo.profile',
]);

实现

还有更多实现,例如 addScope()createAuthUrl() 用于 OAuth 注册,您可以参考以下示例代码

yidas/php-google-api-sample

GOOGLE 服务

您可以直接使用来自 yidas\google\apiHelper\Client 的任何使用 Google_Client 的 Service Helper

use \yidas\google\apiHelper\services\People as PeopleHelper;
\yidas\google\apiHelper\Client::setClient([...])

$contacts = PeopleHelper::getSimpleContacts();

或者,您可以为每个 Service Helper 重置一个 Google_Client

use \yidas\google\apiHelper\services\People as PeopleHelper;

PeopleHelper::setClient($googleClient);
// PeopleHelper::method()...

使用 getService() 获取用于高级使用的当前 Google 服务对象

$service = \yidas\google\apiHelper\services\People::getService();
// $service->people_connections->...

人员

API 文档: https://developers.google.com/people/api/rest/

People Helper 引用了 Google_Service_PeopleService_Person 方法,这为设置人的 setValue() 提供了简单接口。

// Simple setValue() example
\yidas\google\apiHelper\services\People::newPerson
    ->setEmailAddresses('myintaer@gmail.com')
    ->setPhoneNumbers('+886')
    ->setBiographies("I'm a note");

属性

通过 Helper 设置人的属性很简单,它提供了三种输入数据类型

1. 原始对象

通过原始 Google 属性类输入,不太方便。

$gPhoneNumber = new Google_Service_PeopleService_PhoneNumber;
$gPhoneNumber->setValue('+886');
\yidas\google\apiHelper\services\People::setPhoneNumbers($gPhoneNumber);
2. 数组

通过数组类型输入将映射到 API 键值设置。

\yidas\google\apiHelper\services\People::setPhoneNumbers(['value' => '+886']);
3. 字符串

通过字符串类型输入将启用Helper属性处理程序,该处理程序会自动为所有属性设置值。

\yidas\google\apiHelper\services\People::setPhoneNumbers('+886');

getSimpleContacts()

使用解析器获取简单的联系数据

public static array getContacts()

示例

// Get formated list by Helper
$contacts = \yidas\google\apiHelper\services\People::getSimpleContacts();

结果

Array
(
    [0] => Array
        (
            [id] => people/c26081557840316580
            [name] => Mr.Nick
            [email] => 
            [phone] => 0912 345 678
        )
    ...

这是一个简单的字段解析器,如果您需要所有字段,可以使用listPeopleConnections()

createContact()

创建人员联系

public static Google_Service_PeopleService_Person createContact()

示例

$person = \yidas\google\apiHelper\services\People::newPerson()
    ->setNames('Nick')
    ->setEmailAddresses('myintaer@gmail.com')
    ->setPhoneNumbers('+886')
    ->createContact();

资源名称:$person->resourceName$person['resourceName']

updateContact()

更新人员联系

public static Google_Service_PeopleService_PeopleEmpty updateContact(array $optParams=null)

示例

$person = \yidas\google\apiHelper\services\People::findByResource($resourceName)
    ->setNames('Nick')
    ->setEmailAddresses('myintaer@gmail.com')
    ->setPhoneNumbers('+886')
    ->updateContact();

deleteContact

删除人员联系

public static Google_Service_PeopleService_PeopleEmpty deleteContact(string $resourceName=null, array $optParams=[])

示例

$person = \yidas\google\apiHelper\services\People::deleteContact($resourceName);

您还可以使用查找模式

$person = \yidas\google\apiHelper\services\People::findByResource($resourceName)
    ->deleteContact();

异常

包括客户端和服务的所有Google异常

try {} catch (\Google_Exception $e) {}

否则,仅限Google服务

try {} catch (\Google_Service_Exception $e) {}

参考