ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

OpenProject 集成 Time Tracker 移动端:通过 OAuth 实现工时记录与自动回写

OpenProject 集成 Time Tracker 移动端:通过 OAuth 实现工时记录与自动回写 OpenProject 集成 Time Tracker 移动端通过 OAuth 实现工时记录与自动回写【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject本指南以 OpenProject 官方用户文档中《Time Tracker integration》一节为核心完整讲解如何把第三方移动应用Time Tracker for OpenProject接入 OpenProject 实例从下载安装、OAuth 应用创建、关键字段填写到 Client ID 与 Base URL 的获取与安全保管。读完本文你将掌握在 OpenProject 管理后台为移动端第三方应用开通 API 访问的完整流程并理解其底层 OAuth 授权机制对应 config/initializers/doorkeeper.rb 的配置与 app/controllers/oauth/applications_controller.rb 的实现。Time Tracker 是什么Time Tracker for OpenProject是一款第三方移动应用用于在手机上记录你在各项任务上花费的时间并将这些记录回写到你的 OpenProject 实例中作为工时time entries统一管理。需要特别强调的是该集成并非由 OpenProject 官方开发也不受 OpenProject 官方支持。它是社区生态中的第三方应用因此在使用前请自行评估其稳定性、数据安全与后续维护风险。Time Tracker 应用主要面向 iOS 与 Android 用户可在 Apple App Store 与 Google Play Store 下载其源代码同样以开源形式对外发布可在其项目仓库中获取。配置前置条件在开始配置之前请确认 OpenProject 实例满足以下条件拥有管理员账号后续需要在 OpenProject 管理后台创建 OAuth 应用只有管理员角色可以执行该操作。这一点在 app/controllers/oauth/applications_controller.rb 中通过before_action :require_admin得到强制保障。Time and costs 模块已激活OpenProject 的工时功能依赖Time and costs模块。该模块需要在 项目设置 → Time and costs 中为对应项目开启开启后才能在工作包上记录工时。关于工时记录的整体能力工作包视图记时、计时按钮、提交信息记时、My page 记时等可参见 Time tracking 用户指南。安装 Time Tracker 应用Time Tracker 移动应用按平台选择安装渠道iOS 用户在 Apple App Store 搜索 Time Tracker for Open Project 安装Android 用户在 Google Play Store 搜索同名应用安装开发者/自编译用户可访问其开源仓库自行构建。安装完成后先不要急于登录请按下一节步骤先在 OpenProject 管理后台完成 OAuth 应用注册再回到应用内使用管理员账号进行授权登录。在 OpenProject 中配置 OAuth 应用OAuth 应用是 OpenProject 对外开放 API 访问的门禁凭证。Time Tracker 应用需要通过 OAuth 2.0 授权流程代表用户访问 OpenProject 的 API v3 接口工时记录的创建与读取都经由该 API。下面按官方文档的步骤完整展开。步骤 1以管理员身份登录并进入认证管理打开 Time Tracker 应用使用你的OpenProject 管理员账号登录首次使用时应用会引导你填写 OpenProject 实例地址。在 OpenProject 的 Web 界面中进入Administration管理面板 → Authentication认证→ OAuth applicationsOAuth 应用标签页。该页面即 OAuth 应用管理列表展示了已注册应用的核心信息列应用名称NAME、所有者OWNER、客户端凭证用户USER USED FOR CLIENT CREDENTIALS、重定向 URIREDIRECT URI以及是否保密CONFIDENTIAL。页面右上角的绿色 Add按钮用于新建应用。步骤 2创建新的 OAuth 应用点击Add按钮进入新建表单然后按以下字段逐一填写Name名称为应用输入一个可识别的名称例如Time Tracker。该名称会在用户授权时展示给用户。Redirect URI重定向 URI填入openprojecttimetracker://oauth-callback。这是一个自定义协议 URIdeep link用户完成 OAuth 授权后OpenProject 会把浏览器/应用重定向回该地址从而回到 Time Tracker 应用本身。Scopes权限范围勾选api_v3。这是 OpenProject API v3 的作用域赋予应用访问必要 API包括工时相关接口的能力。Confidential保密保持不勾选。非保密public客户端适合移动端原生应用场景——移动应用无法安全保存客户端密钥因此依赖 PKCE 等机制保证安全OpenProject 默认启用force_pkce见下文原理部分。Client Credentials User客户端凭证用户留空。该字段仅用于客户端凭证client credentials授权流Time Tracker 场景不需要。填完后点击Create按钮提交。步骤 3保存 Client ID 与 Base URL应用创建成功后会进入应用详情页。请立即记录以下两个关键值并妥善保管Client ID客户端 IDOAuth 应用的唯一标识Time Tracker 应用登录时需要用到。Base URL基础地址复制自Auth URL授权 URL字段形如https://example.com即你的 OpenProject 实例地址不含/oauth/authorize后缀。详情页同时会展示一次性的Client secret仅显示一次需及时保存以及确认信息Scopes 为 Full API v3 access、Confidential 为 No、Redirect URI 为openprojecttimetracker://oauth-callback。Auth URL 与 Access token URL 则分别指向实例的/oauth/authorize与/oauth/token端点这两类端点由 OpenProject 的 OAuth 元数据服务对外发布相关路由定义见 config/routes.rb 与 config/routes.rb。步骤 4在 Time Tracker 应用中完成授权回到 Time Tracker 应用使用管理员账号或后续被授予权限的普通用户登录并在应用内填入上一步记录的 Client ID 与 Base URL。应用会引导用户跳转到 OpenProject 的授权页面完成 OAuth 授权授权通过后即以用户身份通过 API v3 记录工时。底层机制OpenProject 的 OAuth 实现原理理解配置项的来龙去脉有助于排查集成问题。OpenProject 的 OAuth 服务基于 Doorkeeper gem 实现核心配置集中在 config/initializers/doorkeeper.rb默认作用域api_v3config/initializers/doorkeeper.rbdefault_scopes :api_v3定义了所有 OAuth 应用的默认权限范围这正是文档要求勾选api_v3的原因——它授予应用访问 OpenProject API v3 的能力工时记录time entry资源即由 API v3 暴露相关路径定义见 lib/api/v3/utilities/path_helper.rb。可选的optional_scopes :scim_v2, :mcpconfig/initializers/doorkeeper.rb与本场景无关。强制 PKCEconfig/initializers/doorkeeper.rbforce_pkce要求所有非保密客户端在使用授权码流程时必须附带 PKCE 证明密钥这正是文档要求Confidential 不勾选仍能保证安全的关键机制防止授权码被截获重用。令牌生命周期授权码 10 分钟有效authorization_code_expires_in 10.minutes、访问令牌 2 小时有效access_token_expires_in 2.hours并启用use_refresh_token支持刷新令牌config/initializers/doorkeeper.rb保证移动应用长时间使用无需频繁重新授权。令牌与密钥哈希存储config/initializers/doorkeeper.rbhash_token_secrets与hash_application_secrets对令牌和应用密钥进行 bcrypt 哈希即使数据库泄露也难以还原明文这也是官方强调Client secret 仅显示一次的原因。在应用管理一侧app/controllers/oauth/applications_controller.rb 展示了 OAuth 应用的生命周期列表页只展示非集成型应用without_integration创建动作通过OAuth::Applications::CreateService落库并返回一次性明文密钥。此外从源码可见 app/controllers/oauth/applications_controller.rb 的toggle动作支持在列表页直接启停enabled某个 OAuth 应用——当发现异常访问或需要临时停用 Time Tracker 集成时可借此快速切断其访问权限无需删除配置。常见问题与排查建议授权后无法跳回应用请核对 Redirect URI 是否严格填写为openprojecttimetracker://oauth-callback注意协议与拼写完全一致且 URI 每行只能一个。提示无 API 权限确认 Scopes 勾选了api_v3并在创建后检查应用详情页是否显示 Full API v3 access。Confidential 误勾选移动端应用不应勾选 Confidential若已勾选可通过 Edit 编辑应用重新取消。Client ID / Base URL 丢失Client ID 可在管理后台的 OAuth applications 列表中随时查看Base URL 即 OpenProject 实例地址取自 Auth URL 字段前缀。需临时停用集成在 OAuth applications 列表中直接切换应用的启用状态即可不必删除重建。总结Time Tracker 集成的本质是通过 OpenProject 标准的 OAuth 2.0 授权码流程配合 PKCE为第三方移动应用签发 API v3 访问权限。管理员只需完成创建 OAuth 应用 → 配置 Redirect URI 与 api_v3 作用域 → 分发 Client ID 与 Base URL三个动作即可让团队成员在手机上随时记录并回写工时。整个流程基于 OpenProject 内置的 OAuth 服务config/initializers/doorkeeper.rb与 OAuth 应用管理控制器无需安装任何额外插件也适用于其他遵循相同 OAuth 规范的第三方客户端接入。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表