serg-php/public-api-hubstaff

此包的最新版本(dev-master)没有可用的许可证信息。

Hubstaff 公共API

安装: 3

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 0

分支: 4

类型:项目

dev-master 2021-12-15 11:39 UTC

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 文件中,在启动时读取,在令牌刷新时写入。

合适的存储应该有读写锁定。并且代码应该在刷新时锁定并重新读取状态文件,以防另一个进程已经刷新了令牌。例如,合适的刷新令牌流程应该是

  1. 锁定
  2. 重新读取状态并加载令牌
  3. 如果令牌尚未过期或即将过期,则使用新令牌(另一个进程已刷新)
  4. 否则刷新令牌
  5. 保存
  6. 释放锁定

客户端应用程序与个人访问令牌

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" 端点