GitHub Apps vs. OAuth Apps:選擇合適的 GitHub 連接方式
比較 GitHub Apps 及 OAuth Apps 在 Logto 集成下的應用。了解安全性、權限、認證管理等關鍵差異,為你的應用選擇適合的 GitHub 認證方案。
當你將 GitHub 認證集成到 Logto 應用時,有兩個選擇:GitHub Apps 及 GitHub OAuth Apps。雖然兩者都可實現「以 GitHub 登入」功能,但在安全性、認證管理和 API 存取方面提供截然不同的體驗。此指南將幫助你了解主要分別,並根據實際情況作出正確選擇。
背景:通往 GitHub 集成的兩條路
Logto 現行文件會指導你設置 GitHub OAuth App 作為社交登入,這是一條更簡單直接的路線,很適合基本登入需求。不過,GitHub Apps 是官方推薦的現代做法,能帶來更強的安全性和細緻的控制權。
你可以這樣想:OAuth Apps 就像給了某人你家的總匙——被授權後即可寬泛存取。GitHub Apps 則是智能門鎖系統,為不同房間分配特定存取碼——用戶只會授權你應用所需的精確權限。
關鍵分別一覽
權限:寬泛 vs 精細
- OAuth Apps 使用寬泛作用域——例如
repo一旦授權即可完全控制倉庫。 - GitHub Apps 使用精細權限——你可只申請「議題:只讀」等不涉及程式碼的權限,用戶亦可在安裝時選擇特定倉庫,而非一刀切地開放全部。
認證安全:永久 vs 有效期
- OAuth Apps 發出的權杖(token)永不過期(除非手動吊銷),也不支援刷新機制。
- GitHub Apps 發出的權杖效期短(約 1 小時)並支援自動刷新,對長期運行的應用更為安全。
身份:用戶 vs 機械人
- OAuth Apps 永遠以授權者(例如
@octocat)身份動作,與其分享相同 API 配額(每小時 5,000 次請求)。 - GitHub Apps 可獨立運作,使用自己專屬機械人身份(例如
@my-app[bot]),API 限額隨用量擴展——非常適合自動化用途。
存取控制:全有全無 vs 可選擇
- OAuth Apps 一次授權後就擁有所有資源的存取權。
- GitHub Apps 允許用戶安裝 app 並選擇特定倉庫,亦能收取權限變動的 webhook 通知——提供更佳透明度與控制性。
持續性:依賴用戶 vs 獨立於用戶
- OAuth Apps 綁定於授權用戶——若該開發者失去權限或離開組織,app 就會失效。
- GitHub Apps 即使安裝者離開組織亦不受影響——自動化和集成服務不中斷運行。
如何選擇?
GitHub Apps 及 OAuth Apps 均可順利配合 Logto 社交連接器使用。Logto 的 Secret Vault 安全儲存兩種集成的 token,但各自帶來不同體驗:
用 OAuth Apps 實現基礎社交登入
若你單純需要用戶認證(以 GitHub 登入),而不打算後續調用 GitHub API,OAuth App 最方便快捷:
- 設定簡單:用戶授權 OAuth App 即可用 GitHub 登入。
- 權杖具長期效期(不需刷新):Logto 可把 access token 存於 Secret Vault,無續期流程——權杖直至被廢止前一直有效。
- 適合僅驗證用戶身份(如電郵、名字、頭像),不需自動化 API 操作的情境。
為什麼選它:開發原型或只需登入及偶爾同步用戶資料的 app,實作最快。
用 GitHub Apps 獲得深度集成
若你的應用需持續存取 GitHub API、自動任務或更嚴格安全:
- 精細權限及倉庫選擇將存取權降至最低且可審核。
- 權杖短效(約 1 小時),GitHub App 可支援 refresh token;啟用後,Logto 會同時儲存 access 與 refresh token,並自動續期,保證後端持續可用,無需用戶重登。
- app 身份(機械人)有助歸屬追蹤,大量自動化時 API 配額更充裕可靠。
特別適合:
- 代表用戶管理 GitHub 倉庫的 SaaS 平台
- 與程式碼、議題、拉取請求互動的 AI agent
- 需長期 API 存取的應用
- 執行自動化任務的工具
在 Logto 設定 GitHub App
GitHub App 的設定與 OAuth App 類似,只是多了幾個關鍵細節。由 OAuth App 轉移至 GitHub App 也只需些微調整。
創建 GitHub App
-
前往「GitHub 設定 > Developer settings > GitHub Apps」
-
按「New GitHub App」
-
配置:
- GitHub App 名稱: 你的 app 獨一無二的標識
- 主頁網址: 你的應用網站
- Callback URL: 你的 Logto 連接器 callback URI(與 OAuth App 相同)
- 安裝期間請求用戶授權(OAuth): 請啟用
- Webhook: 視乎需要選用
- 權限: 選擇精細的權限(如「議題:只讀」)
- 用戶權限: 若需代表用戶操作,請新增帳戶權限
-
產生 client secret(與 OAuth App 類似)

在 Logto 配置
Logto 連接器的配置基本一致:
- 輸入 GitHub App 的 Client ID
- 輸入 Client secret
- 若需呼叫 GitHub API, 請啟用**「存儲權杖以支援持續 API 存取」**
- 關鍵差異 - Scopes:
- 不同於 OAuth Apps 需在 Logto 輸入 scope,GitHub App 的權限是在 GitHub App 設定內選擇的。
- 所以在 Logto 直接留空 scope 欄位即可。
- 請求 refresh token(可選)
- 在 Logto 的 scope 欄加
offline_access可啟用 refresh token - GitHub 將會自動發放 refresh token,Logto 會存儲兩款 token 並自動輪換,確保權杖持續有效
- 注意:OAuth Apps 不支援 refresh token,因為 access token 永不過期,所以
offline_access並不適用。在 GitHub Apps 集成下則不同。
- 在 Logto 的 scope 欄加

結論
OAuth Apps 雖然依然可作基本認證用途,但 GitHub Apps 代表未來的集成趨勢。它們通過有效期限、精細權限模型及更佳用戶控制,帶來極致安全保障。
對 Logto 用戶而言,兩者均可用於社交連接器。選擇權視乎你的具體需求:
- 只需認證可選用 OAuth Apps
- 需要 API 存取、自動化或提升安全隨時切換到 GitHub Apps
記住——Logto 的 Secret Vault 及自動權杖續期功能令 GitHub App 的 token 管理變得同 OAuth Apps 一樣簡單,而安全性更上一層樓。無論你是開發 AI 編碼助手、專案管理平台或開發者利器,現在你已掌握選擇 Logto GitHub 集成的正確知識!
準備開始?馬上參考 Logto 的 GitHub 連接器 ,即日開展 GitHub 認證集成。

