serg-php / public-api-hubstaff
Hubstaff 公共API
Requires
- php: >=7.2
- ext-json: *
- facile-it/php-openid-client: ^0.1.4
- guzzlehttp/psr7: 2.1.0
- http-interop/http-factory-guzzle: ^1.0.0
- php-http/guzzle7-adapter: ^0.1.1
- php-http/message: ^1.10
- symfony/cache: ^5.2
This package is auto-updated.
Last update: 2024-09-15 17:32:00 UTC
README
此存储库包含一个简单的示例 CLI 工具,展示了如何通过 PHP 访问 Hubstaff 公共 API。
核心访问全部通过 php-openid-client 包完成。
开放ID发现
Hubstaff 账户系统使用 Open ID Connect 发现协议,允许应用程序轻松查询令牌端点、授权端点等。因此,您只需知道认证域(https://account.hubstaff.com/)和 API 端点 URL(https://api.hubstaff.com/)。
client.php 中的示例代码会获取并缓存这些发现数据 1 周。这样就不需要不断获取。
令牌持久性
此演示提供了一个简单的 API 令牌管理方法。它简单地将其存储在 json 文件中,在启动时读取,在令牌刷新时写入。
合适的存储应该有读写锁定。并且代码应该在刷新时锁定并重新读取状态文件,以防另一个进程已经刷新了令牌。例如,合适的刷新令牌流程应该是
- 锁定
- 重新读取状态并加载令牌
- 如果令牌尚未过期或即将过期,则使用新令牌(另一个进程已刷新)
- 否则刷新令牌
- 保存
- 释放锁定
客户端应用程序与个人访问令牌
Hubstaff 账户系统的个人访问令牌设计得与我们的客户端应用程序非常相似,它们都产生短生命周期的访问令牌,需要定期刷新。
client.php 中的代码是一个示例,展示了如何使用磁盘访问作为永久令牌存储来完成此任务。如果您有其他存储机制,可以在 saveState 和 loadState 方法中实现。
个人访问令牌使用
api.js 中的默认设置是使用个人访问令牌。要使用,请创建/编辑 configState.json 以包含以下条目。
{ "token": { "refresh_token": "personal access refresh token goes here" } }
然后当 api.js 发出请求时,它将自动刷新以获取所需的访问令牌,并在执行之间将其持久化到 configState.json 中。
按照上述定义设置 configState.json,然后按如下方式运行 cli_tool 示例
php client.php
这将输出 "v2/users/me" 端点