netsoftholdings/public-api-demo

该软件包最新版本(dev-master)没有可用的许可信息。

Hubstaff 公共API

安装: 38

依赖者: 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:34:43 UTC


README

该仓库包含一个简单的示例命令行工具,展示如何通过PHP访问Hubstaff公共API。

核心访问全部通过php-openid-client软件包完成。

Open 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”端点