plhw/hf-api-client

PLHW API 客户端提供了一种方式,用于通过 OAuth2 服务器对客户端进行身份验证,并对我们 API 端点发出授权请求

3.0.0 2023-09-05 11:16 UTC

README

PLHW API 客户端提供了一种方式,用于通过我们的 OAuth2 服务器对客户端进行身份验证,并对我们 API 端点发出授权请求。

安装

composer require plhw/hf-api-client

API 调用示例

安装应用程序成功后,一些示例脚本位于。要使用它们,首先将配置文件复制到您的应用程序根目录。

cp ./vendor/plhw/hf-api-client/example/.hf-api-client-secrets.php.dist ./.hf-api-client-secrets.php

打开 .hf-api-client-secrets.php 并使用我们从您那里获得的凭证进行配置。

最后,示例脚本配置为使用 data/cache 作为缓存的访问令牌的目录。此目录必须存在(仅限示例)。

现在您可以运行示例脚本了;

php ./vendor/plhw/hf-api-client/example/practicesPos.php

使用方法

要在您的应用程序中实现使用,您可以查看示例脚本。

$options = \HF\ApiClient\Options\Options::fromArray(
    [
        'server_uri'    => 'https://api.plhw.nl',
        'client_id'     => 'id',
        'client_secret' => 'secret',    
        'scope'         => 'customer_pos',
        'grant_type'    => 'client_credentials',
    ]
);

$api = \HF\ApiClient\ApiClient::createClient($options, /* $cache OPTIONAL */);

以上是配置所需的全部内容,尽管我建议您调整缓存机制。目前我们使用 zendframework/zend-cache 组件。在 v3 发布时,可能会将其更改为使用 psr-7 缓存 FIG 标准。

当您有 ApiClient 实例时,您可以通过调用定义在 /vendor/plhw/hf-api-client/data/v1 上的方法来使用它。此外,API 文档 可在此处找到。

例如,搜索围绕坐标发布的实践。

$results = $api->customer_posAroundCoordinate('52.3629882,4.8593175', 15000, 'insoles');

if ($api->isSuccess()) {
    foreach ($results['data'] as $result) {
        printf("Practice %s on %skm\n", $result['attributes']['name'],
            round(($result['attributes']['distance'] / 100)) / 10);
        printf(" - sells %s\n", implode(', ', $result['attributes']['products']));
    }
} else {
    printf("Error (%d): %s\n", $api->getStatusCode(), $result);
}

内部机制

当您在 APIClient 实例上调用任何方法时,会从我们的 OAuth2 服务器请求一个访问令牌。该访问令牌随后被缓存以供后续使用,直到它过期或被删除。之后,它会获得一个新的访问令牌。

对我们 API 的任何调用现在都使用该访问令牌进行 签名,并由我们的权限系统用于确定您是否有权访问。

我们的 API 将接受并返回自动(解)编码的 JSON 负载。

OAuth2 ClientCredentialsGrant

对于机器到机器通信,OAuth2 ClientCredentialGrant 是合适的。您必须从我们那里获取以下信息。

  1. 客户端 ID
  2. 客户端密钥
  3. 作用域

您的客户端应用程序应通过代理与我们服务器通信。


               
   [webbrowser] <----- internet ----->   [application]   <----- internet -----> [api.plhw.nl]

1.  request data    -> request ->      do we have valid access token?

2.                                     NO, get access token   -> request  -> id,secret,scope

3.                                                                                validate request

4.                                     store token in cache   <- response <- access token
                                                                     
5.                                     YES, request & token.  -> request  -> validate token

6.                                     data                   <- response <- data

7.  data             <- response <-    data

在 'commerce' 域中运行所有示例

find ./example/commerce/ -maxdepth 1 -type f -exec {} \;

升级

v2 已为 php 8+ 重写。原理相同,但有一些细微的变化可能会破坏您的应用程序。

请参阅我们的示例以了解如何与 API 交互。