ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Automatisch 连接 GitHub 完整指南:OAuth 应用注册、连接配置与鉴权原理

Automatisch 连接 GitHub 完整指南:OAuth 应用注册、连接配置与鉴权原理 Automatisch 连接 GitHub 完整指南OAuth 应用注册、连接配置与鉴权原理【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch本指南以 Automatisch 官方文档中的 GitHub 连接说明为主线系统讲解如何在 Automatisch 中建立 GitHub OAuth 连接从 GitHub 侧注册 OAuth 应用、在 Automatisch 侧填写 Client ID 与 Client Secret到连接校验的底层实现。读完本文你将能独立完成 GitHub 连接配置并理解其授权流程、Scope 权限与 Token 管理机制为在自动化流程Flow中使用 GitHub 触发器与动作打下基础。一、连接前的准备注册一个 GitHub OAuth 应用GitHub 连接采用标准的 OAuth 2.0 授权码模式Authorization Code Grant因此第一步必须在 GitHub 侧注册一个 OAuth 应用。整个操作流程如下对应官方文档 connection.md 的完整步骤登录 GitHub 后进入Settings → Developer settings → OAuth Apps点击New OAuth App进入注册页面填写Application name应用名称与Homepage URL主页地址可填写你的 Automatisch 站点地址在 Automatisch 的连接Connections页面选择 GitHub 并添加新连接此时页面会展示一个OAuth Redirect URL将该值复制并粘贴到 GitHub 页面的Authorization callback URL字段中点击 GitHub 页面上的Register application按钮完成注册注册成功后进入应用详情页复制其中的Client ID值填入 Automatisch 的Client ID字段在 GitHub 应用详情页点击Generate a new client secret生成客户端密钥将生成的值复制到 Automatisch 的Client Secret字段点击 Automatisch 页面上的Submit按钮提交连接创建成功后即可在流程Flow中直接选用这个 GitHub 连接。二、理解 Automatisch 侧的三个连接字段从源码 auth/index.js 可以看到GitHub 连接的认证表单由三个字段组成其中后两个需要你手动填写字段 Key界面标签类型说明oAuthRedirectUrlOAuth Redirect URLstring只读自动生成的回调地址值为{WEB_APP_URL}/app/github/connections/add即你的 Automatisch 实例地址加/app/github/connections/add。点击即可复制需填到 GitHub 的 Authorization callback URL 中consumerKeyClient IDstring必填GitHub OAuth 应用的 Client IDconsumerSecretClient Secretstring必填GitHub OAuth 应用生成的 Client Secret其中oAuthRedirectUrl为readOnly: true的只读字段由系统根据部署环境自动解析WEB_APP_URL你无需也无法手动修改而consumerKey、consumerSecret对应 OAuth 应用凭证属于敏感信息需要妥善保管。三、连接背后的鉴权实现源码级原理3.1 应用定义与接口域名GitHub 集成在 index.js 中通过defineApp注册name: GitHub、key: githubbaseUrl: https://github.com用于 OAuth 授权与换取 TokenapiBaseUrl: https://api.github.com用于后续所有 API 请求supportsConnections: true声明该应用支持连接beforeRequest: [addAuthHeader]在每次请求前自动注入鉴权头。3.2 生成授权 URLScope 权限范围当你在 Automatisch 中点击授权时后端调用 generate-auth-url.js 生成跳转地址const scopes [read:org, repo, user]; const searchParams new URLSearchParams({ client_id: $.auth.data.consumerKey, redirect_uri: redirectUri, scope: scopes.join(,), }); const url ${$.app.baseUrl}/login/oauth/authorize?${searchParams.toString()};这段代码说明了两点关键信息授权 URL 指向https://github.com/login/oauth/authorize携带client_id、redirect_uri与scope三个参数Automatisch 默认申请三个 Scoperead:org读取组织信息、repo仓库读写权限覆盖 issues、pull requests 等、user用户基本信息。这也意味着通过该连接可以访问仓库相关资源与后面触发器/动作的能力范围一致。3.3 凭证校验用 Code 换取 Access Token用户完成 GitHub 授权页跳转后后端调用 verify-credentials.js 完成 Token 交换const response await $.http.post( ${$.app.baseUrl}/login/oauth/access_token, { client_id: $.auth.data.consumerKey, client_secret: $.auth.data.consumerSecret, code: $.auth.data.code, }, { headers: { Accept: application/json } } );校验成功后连接会持久化保存以下数据accessToken、scope、tokenType、userId、screenName即 GitHub 用户名。随后代码会调用getCurrentUser见 get-current-user.js请求GET /user并把返回的用户 ID 与登录名一并写入连接信息方便在界面中展示当前连接对应的 GitHub 账号。3.4 连接健康检查每次连接有效性检测调用 is-still-verified.js它再次请求GET /user只要返回的用户id存在即判定连接仍然有效。如果 Token 失效例如用户在 GitHub 撤销了授权该检查会失败Automatisch 会提示重新连接。3.5 请求自动鉴权GitHub 应用的beforeRequest钩子 add-auth-header.js 会在每个发往 GitHub API 的请求上自动附加requestConfig.headers.Authorization Bearer ${$.auth.data.accessToken};因此所有触发器与动作代码无需关心 Token 拼接只需直接调用$.http即可鉴权由框架统一完成。四、连接成功后的使用场景建立连接后你便可以在流程编辑器中选用 GitHub 的能力。当前仓库中 GitHub 集成的完整能力如下触发器见 triggers/index.jsNew issues当仓库有新 issue 创建时触发New pull requests当有新 pull request 创建时触发New pull request event监听 pull request 相关的 webhook 事件New stargazers当有用户给仓库点星star时触发New watchers当有用户关注watch仓库时触发。动作见 actions/index.jsCreate issue在指定仓库创建 issue参数为repo仓库下拉选择数据来自动态数据源listRepos、title标题、body正文实现见 create-issue/index.js。动态数据源dynamic-data 目录listRepos拉取当前账号可访问的仓库列表供下拉选择listLabels拉取仓库的标签列表。以上触发器和动作的完整清单也可以直接查看官方文档页面 actions.md 与 triggers.md。五、常见问题排查建议结合源码实现以下场景值得留意回调地址不匹配GitHub 要求 Authorization callback URL 与授权请求中的redirect_uri完全一致。请确认填入 GitHub 的是 Automatisch 页面展示的完整 OAuth Redirect URL{WEB_APP_URL}/app/github/connections/add注意你的 Automatisch 站点地址需能公网访问。权限不足404/403如果某些仓库操作失败先确认 OAuth 授权时授予的 Scope 是否包含所需权限默认包含repo、read:org、user以及 GitHub 账号是否具备对应仓库的访问权限。连接失效若出现连接已失效提示通常是 Access Token 已过期或被用户在 GitHub 侧撤销。可在 Automatisch 中重新走一遍授权流程重新生成连接或再次授权底层对应isStillVerified校验失败后的重新认证。配置完成后即可在 Automatisch 的流程中将 GitHub 事件作为触发器、将创建 issue 等操作作为动作与其余上百个集成应用编排组合实现仓库管理自动化。【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表