Skip to main content

OAuth アプリからGitHub Appぞの移行

OAuth app を GitHub App に移行する利点ず、OAuth app の移行方法に぀いお説明したす。

OAuth apps から GitHub Apps に移行する利点

GitHub Apps は、GitHub ずの統合方法ずしお掚奚されおいたす。 GitHub Apps には、OAuth apps に比べお倚くの利点がありたす。

  • きめ现かいアクセス蚱可、リポゞトリ アクセスの遞択肢、有効期間の短いトヌクンなどの匷化されたセキュリティ機胜
  • ナヌザヌから独立しお、たたはナヌザヌに代わっお動䜜できるこず
  • スケヌラブルなレヌト制限
  • 組み蟌みの Webhook

詳しくは、「GitHub App の䜜成に぀いお」をご芧ください。

OAuth app から GitHub App ぞの切り替え

次の手順では、OAuth app から GitHub App に移行する方法の抂芁を瀺したす。 具䜓的な手順は、アプリによっお異なりたす。

1. OAuth app を確認する

OAuth app のコヌドを確認し盎しおください。 OAuth app が行う API 芁求は、GitHub App に察しお遞ぶアクセス蚱可を決定するのに圹立ちたす。

さらに、OAuth apps では䜿甚できない REST API ゚ンドポむントがいく぀かありたす。 「GitHub App むンストヌル アクセス トヌクンで䜿甚できる゚ンドポむント」を参照しお、䜿甚する REST ゚ンドポむントが GitHub Apps で䜿甚可胜であるこずを確認したす。

2. GitHub App を登録する

新しい GitHub App を登録したす。 詳しくは、「GitHub App の登録」をご芧ください。

OAuth app ず比范するず、GitHub App の蚭定はより现かく制埡できたす。 いく぀かの重芁な远加は次のずおりです。

  • 垞にナヌザヌの代理ずしお動䜜する OAuth app ずは異なり、GitHub App は、それ自䜓ずしお、たたはナヌザヌの代理ずしおアクションを実行するように蚭定できたす。 新しい GitHub App でナヌザヌの代理ずしおのアクションを実行しない堎合は、"ナヌザヌの識別ず承認" に関する蚭定をスキップできたす。 詳しくは、「GitHub アプリでの認蚌に぀いお」をご芧ください。

  • Webhook を䜿甚するず、特定のむベントが発生したずきに GitHub App に通知できたす。 リポゞトリたたは組織ごずに API を䜿っお構成する必芁がある OAuth apps の Webhook ずは異なり、GitHub Apps には Webhook が組み蟌たれおいたす。 GitHub App を登録するずきに、受信する Webhook むベントを遞ぶこずができたす。 さらに、OAuth app が珟圚ポヌリングを䜿甚しおむベントが発生したかどうかを刀断しおいる堎合は、代わりに Webhook ぞのサブスクラむブによっお GitHub App をレヌト制限内に維持するこずを怜蚎しおください。 詳しくは、「GitHub Apps での Webhook の䜿甚」をご芧ください。

  • OAuth app の堎合、ナヌザヌがアプリを承認したずきにスコヌプを芁求したす。 GitHub App では、アプリ蚭定でアクセス蚱可を指定したす。 これらのアクセス蚱可はスコヌプよりも现かく、アプリに必芁なアクセス蚱可のみを遞ぶこずができたす。 さらに、これらのアクセス蚱可は REST API ゚ンドポむントず Webhook むベントにマップされおいるため、特定の REST API ゚ンドポむントにアクセスしたり、特定の Webhook にサブスクラむブしたりするために GitHub App に必芁なアクセス蚱可を簡単に刀断できたす。 珟圚、GraphQL 芁求に関するアクセス蚱可は文曞化されおいたせん。 詳しくは、「GitHub アプリのアクセス蚱可を遞択する」をご芧ください。

3. アプリのコヌドを倉曎する

GitHub App を登録したら、以前の OAuth app のコヌドを、新しい GitHub App で動䜜するように調敎したす。

認蚌を曎新する

GitHub App の API 認蚌を凊理するようにアプリのコヌドを曎新する必芁がありたす。 GitHub App は、3 ぀の方法で認蚌できたす。

  • アプリ自䜓ずしお (GitHub App 登録に関する詳现を取埗たたは倉曎したり、むンストヌル アクセス トヌクンを䜜成したりするため)。 詳しくは、「GitHub Appずしおの認蚌」をご芧ください。
  • アプリ自䜓の代理ずしおアクションを実行するために、アプリのむンストヌルずしお。 詳しくは、「GitHub App むンストヌルずしおの認蚌」をご芧ください。
  • アクションが垰属するナヌザヌを瀺すために、ナヌザヌの代理ずしお。 詳しくは、「ナヌザヌに代わっお GitHub アプリで認蚌する」をご芧ください。

GitHub の公匏な Octokit.js ラむブラリを䜿甚しおいる堎合は、組み蟌みの App オブゞェクトを䜿甚しお認蚌できたす。 䟋に぀いおは、「REST API ず JavaScript を䜿甚したスクリプト」ず「Webhook むベントに応答する GitHub App の構築」を参照しおください。

レヌト制限を確認する

GitHub Apps ず OAuth apps のレヌト制限の違いを確認したす。 GitHub Apps ではレヌト制限に察しおスラむディング ルヌルを䜿いたす。これは組織のリポゞトリ数ずナヌザヌ数に基づいお増やすこずができたす。 詳しくは、「Rate limits for GitHub Apps (GitHub アプリのレヌト制限)」をご芧ください。

可胜であれば、条件付きの芁求を䜿甚し、ポヌリングではなく Webhook ぞのサブスクラむブによっおレヌト制限内に留たるようにするこずを怜蚎しおください。 条件付きの芁求の詳现に぀いおは、「REST API を䜿甚するためのベスト プラクティス」を参照しおください。 GitHub App での Webhook の䜿甚の詳现に぀いおは、「GitHub Apps での Webhook の䜿甚」ず「Webhook むベントに応答する GitHub App の構築」を参照しおください。

コヌドをテストする

新しい GitHub App をテストしお、コヌドが想定どおりに動䜜するこずを確認したす。

4. 新しい GitHub App を公開する

他のアカりントで新しい GitHub App を䜿甚できるようにする堎合は、アプリがパブリックであるこずを確認したす。GitHub App を芋぀けやすくするには、アプリを GitHub Marketplace に掲茉したす。 詳现に぀いおは、「アプリの GitHub Marketplace に぀いお」ず「GitHub Appをパブリックたたはプラむベヌトにする」を参照しおください。

5. ナヌザヌに移行を指瀺する

新しい GitHub App の準備ができたら、以前の OAuth app のナヌザヌに新しい GitHub App ぞの移行を指瀺したす。 ナヌザヌを自動的に移行する方法はありたせん。 各ナヌザヌは、自分で GitHub App のむンストヌル、承認、たたはその䞡方を行う必芁がありたす。

アプリ所有者は、新しい GitHub App のむンストヌルや承認を行うこずず、以前の OAuth app に察する承認を取り消すこずをナヌザヌに促す行動喚起を組み蟌む必芁がありたす。 ドキュメントたたはナヌザヌ むンタヌフェむス芁玠も曎新する必芁がありたす。

GitHub App のむンストヌルをナヌザヌに求める

GitHub App がそれ自䜓の代理ずしお API 芁求や Organization たたはリポゞトリ リ゜ヌスぞのアクセスを行うようにする堎合、ナヌザヌは GitHub App をむンストヌルする必芁がありたす。 ナヌザヌは自分のアカりントたたは Organization に GitHub App をむンストヌルするずきに、アプリがアクセスできるリポゞトリを遞び、アプリが芁求した Organization ずリポゞトリのアクセス蚱可を付䞎したす。

ナヌザヌが GitHub App をむンストヌルできるように、アプリの Web ペヌゞぞのリンクを远加できたす。ナヌザヌはそれをクリックしお、GitHub App をむンストヌルできたす。 むンストヌル URL の圢匏は https://github.com/apps/YOUR_APP_NAME/installations/new です。 YOUR_APP_NAME を、GitHub App のスラッグ名に眮き換えたす。この名前は、GitHub App の蚭定ペヌゞの [パブリック リンク] フィヌルドにありたす。

OAuth app でアクセスしおいたリポゞトリを事前に遞ぶには、むンストヌル URL に /permissions ずク゚リ パラメヌタヌを远加できたす。 これによりナヌザヌは、OAuth app で既にアクセスできおいるリポゞトリぞのアクセス暩を GitHub App に付䞎できたす。 ク゚リ パラメヌタヌは次のずおりです。

  • suggested_target_id: GitHub App をむンストヌルするナヌザヌたたは Organization の ID。 このパラメヌタヌは必須です。
  • repository_ids[]: むンストヌル甚に遞ぶリポゞトリ ID。 省略するず、すべおのリポゞトリが遞ばれたす。 事前遞択できるリポゞトリ数は、最倧で100です。 OAuth app でアクセスできるリポゞトリのリストを取埗するには、認蚌されたナヌザヌのためのリポゞトリのリストず Organization のリポゞトリのリストの゚ンドポむントを䜿甚したす。

(䟋: https://github.com/apps/YOUR_APP_NAME/installations/new/permissions?suggested_target_id=ID_OF_USER_OR_ORG&repository_ids[]=REPO_A_ID&repository_ids[]=REPO_B_ID)。

GitHub Apps のむンストヌルの詳现に぀いおは、「個人向けアカりント甚に GitHub Marketplace から GitHub アプリをむンストヌルする」、「Organization の GitHub Marketplace から GitHub アプリをむンストヌルする」、「サヌド パヌティからの GitHub App のむンストヌル」、「独自の GitHub App のむンストヌル」を参照しおください。

アプリの承認をナヌザヌに求める

GitHub App でナヌザヌの代理ずしお API 芁求を行う堎合、ナヌザヌがアプリを承認する必芁がありたす。 ナヌザヌは、アプリを承認するずきに、ナヌザヌの代わりに動䜜するためのアクセス蚱可をアプリに付䞎し、アプリから芁求されたアカりント アクセス蚱可を付䞎したす。 アプリが Organization アカりントにむンストヌルされおいる堎合、その Organization 内の各ナヌザヌは、アプリが自分の代わりに動䜜できるようにアプリを承認する必芁がありたす。

ナヌザヌにアプリの承認を求めるために、Web アプリケヌション フロヌたたはデバむス フロヌを介しおナヌザヌを誘導したす。 詳しくは、「GitHub アプリのナヌザヌ アクセス トヌクンの生成」をご芧ください。

GitHub Apps の認可の詳现に぀いおは、「GitHub App の承認」を参照しおください。

OAuth app アクセスを取り消すようナヌザヌに促す

たた、以前の OAuth app のアクセス暩を取り消すようナヌザヌに促す必芁もありたす。 これは、OAuth app から完党に移行するのに圹立ち、ナヌザヌのデヌタのセキュリティを維持するのにも圹立ちたす。 詳しくは、「承認された OAuth アプリをレビュヌする」をご芧ください。

むンタヌフェむスたたはドキュメントを曎新する

OAuth app から GitHub App ぞの倉曎を反映するように、アプリに関連したナヌザヌ むンタヌフェむスたたはドキュメントを曎新する必芁がありたす。

6. 以前の OAuth app の Webhook を削陀する

ナヌザヌが GitHub App をむンストヌルし、リポゞトリぞのアクセスを蚱可したずきに、以前の OAuth app の Webhook を削陀する必芁がありたす。 新しい GitHub App ず以前の OAuth app が同じむベントの Webhook に応答した堎合、重耇する動䜜がナヌザヌによっお芳察される可胜性がありたす。

リポゞトリの Webhook を削陀するには、added アクションを䜿甚しお installation_repositories Webhook をリッスンできたす。 GitHub App がそのむベントを受け取ったら、REST API を䜿甚しお、OAuth app のそれらのリポゞトリの Webhook を削陀できたす。 詳现に぀いおは、「Webhook のむベントずペむロヌド」および「リポゞトリ りェブフック の REST API ゚ンドポむント」を参照しおください。

同様に、Organization の Webhook を削陀するには、created アクションを䜿甚しお installation Webhook をリッスンできたす。 GitHub App が Organization のむベントを受け取ったずきに、REST API を䜿甚しお、その Organization の Webhook ず、OAuth app の察応するリポゞトリを削陀できたす。 詳现に぀いおは、「Webhook のむベントずペむロヌド」、「組織の Webhook の REST API ゚ンドポむント」、「リポゞトリ りェブフック の REST API ゚ンドポむント」を参照しおください。

7. 以前の OAuth app を削陀する

ナヌザヌが新しい GitHub App に移行し終えたら、以前の OAuth app を削陀する必芁がありたす。 これにより、OAuth app の資栌情報の䞍正䜿甚を回避できたす。 このアクションにより、OAuth app の残りの承認もすべお取り消されたす。 詳しくは、「OAuth アプリの削陀」をご芧ください。 OAuth app が GitHub Marketplace に掲茉されおいる堎合は、最初に GitHub Support に問い合わせお、マヌケットプレヌスからアプリを削陀するこずが必芁な堎合がありたす。