# GitHub Apps 與 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 使用廣泛的 scope——請求
repo相當於控管所有倉庫存取。 - GitHub Apps 則可細緻選擇權限——比如只申請「議題:僅讀取」而無需碰觸程式碼。安裝時用戶亦可挑選特定倉庫,不需通行全部權限。
權杖安全性:永久 vs. 有效期
- OAuth Apps 發出的權杖永久有效(除非手動撤回),且無刷新機制。
- GitHub Apps 使用短時效權杖(有效 1 小時),並且自動支持刷新流程——對於長時間運行的應用安全性大大提升。
身份:用戶 vs. 機器人
- OAuth Apps 永遠以授權用戶(如
@octocat)身份操作,並共用同一個速率限制(每小時 5,000 次請求)。 - GitHub Apps 能以自己的機器人身份(例:
@my-app[bot])獨立運作,並根據用量自動增加速率限制——超適合自動化任務。
存取控制:全有全無 vs. 精選
- OAuth Apps 所有資源只需用戶一次性授權。
- GitHub Apps 用戶安裝時可挑選具體倉庫,權限變動時會有 webhook 通知——用戶更易掌握與控管。
持久性:用戶綁定 vs. 獨立運作
- OAuth Apps 綁定於授權用戶——如果該開發者失去權限或離開組織,應用將無法運作。
- GitHub Apps 無論安裝人員是否在組織內都能保持運作——自動化及整合服務不中斷。
如何選擇?
GitHub Apps 和 OAuth Apps 都能與 Logto 的社交連結器無縫整合。Logto 的 Secret Vault 能安全儲存這兩種整合產生的權杖,不過兩者帶來的體驗大相逕庭:
用 OAuth Apps 做基本社交登入
只需驗證用戶身分(GitHub 登入),且後續不用調用 GitHub API 時,OAuth App 是最快捷的方式:
- 設定簡單:用戶授權你的 OAuth App 後即可透過 GitHub 登入。
- 權杖壽命長(無需刷新):Logto 可將 access token 存於 Secret Vault,且不會自動失效,僅在撤銷時終止。
- 適合只取得用戶個人資料(如 email、名稱、頭像),而沒有自動化 API 工作的場景。
為什麼用這個:原型或只需登入、偶爾同步個人資訊的應用,實作最快。
用 GitHub Apps 提升深度整合
當你的應用需要持續訪問 GitHub API、背景作業自動化,或更嚴格的安全時,請選用 GitHub App:
- 可細緻控管權限及挑選倉庫,最小授權,審核容易。
- 權杖短時效(如 1 小時),可啟用刷新權杖;Logto 會在 Secret Vault 儲存 access 及 refresh tokens,並自動處理更換,後端可無縫續用 API 無需用戶重新登入。
- 應用(機器人)身份,既利於歸屬記錄,也可彈性擴大 API 頻率限制,更可靠支援重度自動化需求。
最適合:
- 為用戶管理 GitHub 倉庫的 SaaS 平台
- 操作程式碼、議題、PR 的 AI 代理人
- 需穩定持續 API 訪問的應用
- 執行背景自動化任務的工具
在 Logto 上設置 GitHub App
設立 GitHub App 的流程與 OAuth App 類似,只有幾處重點不同。從 OAuth App 遷移到 GitHub App,所需改動很少。
建立 GitHub App
-
前往「GitHub 設定 > 開發者設定 > GitHub Apps」
-
按「New GitHub App」
-
設定:
- GitHub App 名稱: 你應用的唯一識別名
- 首頁 URL: 你應用的官網
- 回調 URL: 你的 Logto 連結器的回調 URI(跟 OAuth App 相同)
- 安裝期間申請用戶授權(OAuth): 勾選啟用
- Webhook: 視乎需求設定
- 權限: 選擇細緻權限(如「議題:僅讀取」)
- 用戶權限: 若要代表用戶操作記得加入帳號相關權限
-
產生 client secret(和 OAuth App 流程相同)

在 Logto 內配置
Logto 的連結器設定幾乎一樣:
- 輸入 GitHub App 的 Client ID
- 輸入 Client secret
- 若要調用 GitHub API,打開 「為持久 API 存取儲存權杖」
- 主要差異 - Scopes:
- GitHub App 權限在 GitHub App 內設定,不像 OAuth Apps 需於 Logto scope 欄位額外加 scopes。
- 在 Logto 的 scope 欄位留空即可。
- 申請刷新權杖(可選)
- 在 Logto 的 scope 欄加上
offline_access可啟用 refresh token - GitHub 隨即發放刷新權杖,Logto 會自動處理換發並同步存入 Secret Vault。
- 注意:OAuth Apps 不支援刷新權杖——他們的 access token 永不過期,所以
offline_access無意義。這便是採用 GitHub App 整合時的不同之處。
- 在 Logto 的 scope 欄加上

結論
OAuth Apps 雖然對於基本登錄依然可行,但 GitHub Apps 已是官方整合的未來趨勢,其短時效權杖、精細權限及用戶透明可控性,也都大幅提升安全與便利。
對於 Logto 用戶,兩者皆可搭配社交連結器使用,重點在於你的需求:
- 只需認證,請先用 OAuth Apps
- 需要 API 存取、自動化、更高安全時再升級用 GitHub Apps
記得——Logto 的 Secret Vault 與自動權杖刷新功能,令 GitHub App 權杖管理簡單得像 OAuth Apps,同時又不犧牲安全性。無論你要打造 AI 程式助手、專案管理平台、還是提升開發效率工具,現在你都具備選擇合適 GitHub 整合方式的知識。
準備開始了嗎?立刻瀏覽 Logto 的 GitHub 連結器,立即整合 GitHub 登錄!

