plhw / hf-api-client
PLHW API 客户端提供了一种方式,用于通过 OAuth2 服务器对客户端进行身份验证,并对我们 API 端点发出授权请求
Requires
- php: ^7.4 | ^8.0
- beberlei/assert: ^3.3
- fig/http-message-util: ^1.1
- laminas/laminas-cache: ^3.0
- laminas/laminas-cache-storage-adapter-filesystem: ^2.0
- laminas/laminas-http: ^2.14
- laminas/laminas-serializer: ^2.10
- league/oauth2-client: ^2.6
- ocramius/package-versions: ^2.1
- ramsey/uuid: ^4.1
- symfony/var-dumper: ^5.3
Requires (Dev)
- plhw/hf-cs-fixer-config: ^2.0
- roave/security-advisories: dev-master
- dev-main
- 3.0.0
- 2.4.0
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.1
- 2.0.0
- 1.0.1
- 1.0.0
- 1.0.0-beta11
- 1.0.0-beta10
- 1.0.0-beta9
- 1.0.0-beta8
- 1.0.0-beta7
- 1.0.0-beta6
- 1.0.0-beta5
- 1.0.0-beta4
- 1.0.0-beta3
- 1.0.0-beta2
- 1.0.0-beta1
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
- dev-renovate/major-symfony
- dev-renovate/lint-staged-15.x
- dev-develop
This package is auto-updated.
Last update: 2024-08-29 13:06:32 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 是合适的。您必须从我们那里获取以下信息。
- 客户端 ID
- 客户端密钥
- 作用域
您的客户端应用程序应通过代理与我们服务器通信。
[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 交互。