繁體中文(香港)
  • GitHub
  • Secret vault
  • 權杖儲存
  • OAuth
  • 社交登入

# GitHub Apps 與 OAuth Apps:選擇合適的 GitHub 連結方式

比較 GitHub Apps 與 OAuth Apps 於 Logto 整合中的應用。瞭解安全性、權限、權杖管理等主要差別,幫助你為自己的應用選擇合適的 GitHub 認證方法。

Ran
Ran
Product & Design

Stop wasting weeks on user auth
Launch secure apps faster with Logto. Integrate user auth in minutes, and focus on your core product.
Get started
Product screenshot

當你將 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

  1. 前往「GitHub 設定 > 開發者設定 > GitHub Apps」

  2. 按「New GitHub App」

  3. 設定:

    • GitHub App 名稱: 你應用的唯一識別名
    • 首頁 URL: 你應用的官網
    • 回調 URL: 你的 Logto 連結器的回調 URI(跟 OAuth App 相同)
    • 安裝期間申請用戶授權(OAuth): 勾選啟用
    • Webhook: 視乎需求設定
    • 權限: 選擇細緻權限(如「議題:僅讀取」)
    • 用戶權限: 若要代表用戶操作記得加入帳號相關權限
  4. 產生 client secret(和 OAuth App 流程相同)

integrate-github-apps.png

在 Logto 內配置

Logto 的連結器設定幾乎一樣:

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

integrate-github-connector-in-logto.png

結論

OAuth Apps 雖然對於基本登錄依然可行,但 GitHub Apps 已是官方整合的未來趨勢,其短時效權杖、精細權限及用戶透明可控性,也都大幅提升安全與便利。

對於 Logto 用戶,兩者皆可搭配社交連結器使用,重點在於你的需求:

  • 只需認證,請先用 OAuth Apps
  • 需要 API 存取、自動化、更高安全時再升級用 GitHub Apps

記得——Logto 的 Secret Vault 與自動權杖刷新功能,令 GitHub App 權杖管理簡單得像 OAuth Apps,同時又不犧牲安全性。無論你要打造 AI 程式助手、專案管理平台、還是提升開發效率工具,現在你都具備選擇合適 GitHub 整合方式的知識。

準備開始了嗎?立刻瀏覽 Logto 的 GitHub 連結器,立即整合 GitHub 登錄!

延伸資源