{"meta":{"title":"OAuth アプリを GitHub Apps に移行する","intro":"OAuth appをGitHub Appに移行する利点と、OAuth appを移行する方法について説明します。","product":"アプリ","breadcrumbs":[{"href":"/ja/apps","title":"アプリ"},{"href":"/ja/apps/creating-github-apps","title":"GitHub アプリの作成"},{"href":"/ja/apps/creating-github-apps/about-creating-github-apps","title":"GitHub アプリの作成について"},{"href":"/ja/apps/creating-github-apps/about-creating-github-apps/migrating-oauth-apps-to-github-apps","title":"OAuth apps から移行"}],"documentType":"article"},"body":"# OAuth アプリを GitHub Apps に移行する\n\nOAuth appをGitHub Appに移行する利点と、OAuth appを移行する方法について説明します。\n\n## OAuth apps から GitHub Apps への移行のメリット\n\nGitHub Apps は、 GitHubと統合するための推奨される方法です。\nGitHub Apps\nOAuth appsよりも多くの利点があります。\n\n* きめ細かいアクセス許可、リポジトリ アクセスの選択肢、有効期間の短いトークンなどの強化されたセキュリティ機能\n* ユーザーから独立して、またはユーザーに代わって動作できること\n* スケーラブルなレート制限\n* 組み込みの Webhook 機能\n\n詳しくは、「[GitHub アプリの作成について](/ja/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps)」をご覧ください。\n\n## OAuth appを a に変換するGitHub App\n\n次の手順では、 OAuth app から GitHub Appに移行する方法の概要を示します。 具体的な手順は、アプリによって異なります。\n\n### 1. ご自身のOAuth appを確認してください\n\nOAuth appのコードを理解し直してください。\nOAuth appが行う API 要求は、GitHub Appに対して選択するアクセス許可を決定するのに役立ちます。\n\nさらに、 OAuth appsで使用できない REST API エンドポイントがいくつかあります。\nGitHub Apps を確認して、使用するすべての REST エンドポイントが[](/ja/rest/authentication/endpoints-available-for-github-app-installation-access-tokens)で使用可能であることを確認します。\n\n### 2. GitHub App を登録します\n\n新しい GitHub Appを登録します。 詳しくは、「[GitHub アプリの登録](/ja/apps/creating-github-apps/registering-a-github-app/registering-a-github-app)」をご覧ください。\n\nOAuth appと比較して、GitHub App設定をより詳細に制御できます。 いくつかの重要な追加は次のとおりです。\n\n* 常にユーザーの代わりに機能する OAuth appとは異なり、 GitHub App 自身またはユーザーの代わりにアクションを実行できます。 新しい GitHub App がユーザーに代わってアクションを実行しないようにする場合は、\\[ユーザーの識別と承認] 設定をスキップできます。 詳しくは、「[GitHub アプリでの認証について](/ja/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app)」をご覧ください。\n\n* Webhook を使用して、特定のイベントが発生したときに GitHub App に通知できます。 各リポジトリまたは組織の API を使用して構成する必要がある OAuth appsの webhook とは異なり、webhook は GitHub Appsに組み込まれています。\n  GitHub Appを登録するときに、受信する Webhook イベントを選択できます。 さらに、 OAuth app が現在ポーリングを使用してイベントが発生したかどうかを判断する場合は、代わりに webhook をサブスクライブして、 GitHub App がレート制限内に収まるようにすることを検討してください。 詳しくは、「[GitHub Apps での Webhook の使用](/ja/apps/creating-github-apps/registering-a-github-app/using-webhooks-with-github-apps)」をご覧ください。\n\n* OAuth appでは、ユーザーがアプリを承認するときにスコープを要求します。\n  GitHub Appでは、アプリ設定でアクセス許可を指定します。 これらのアクセス許可はスコープよりも細かく、アプリに必要なアクセス許可のみを選ぶことができます。 さらに、これらのアクセス許可は REST API エンドポイントと webhook イベントにマップされるため、特定の REST API エンドポイントにアクセスしたり、特定の Webhook をサブスクライブしたりするために GitHub App に必要なアクセス許可を簡単に決定できます。 現在、GraphQL 要求に関するアクセス許可は文書化されていません。 詳しくは、「[GitHub アプリのアクセス許可の選択](/ja/apps/creating-github-apps/registering-a-github-app/choosing-permissions-for-a-github-app)」をご覧ください。\n\n### 3. アプリのコードを変更する\n\nGitHub Appを登録したら、古いOAuth appのコードを新しいGitHub Appで動作するように調整します。\n\n#### 認証を更新する\n\nGitHub Appの API 認証を処理するには、アプリのコードを更新する必要があります。\nGitHub Appは、次の 3 つの方法で認証できます。\n\n* アプリ自体として、 GitHub App 登録に関する詳細を取得または変更したり、インストール アクセス トークンを作成したりするため。 詳しくは、「[GitHub アプリとしての認証](/ja/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app)」をご覧ください。\n* アプリ自体の代理としてアクションを実行するために、アプリのインストールとして。 詳しくは、「[GitHub App インストールとしての認証](/ja/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation)」をご覧ください。\n* ユーザーの代理として、アクションをユーザーに帰属させるために。 詳しくは、「[ユーザーに代わってGitHub アプリで認証する](/ja/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user)」をご覧ください。\n\nGitHubの公式 Octokit.js ライブラリを使用している場合は、組み込みの`App` オブジェクトを使用して認証できます。 例については、「[REST API と JavaScript を使用したスクリプト](/ja/rest/guides/scripting-with-the-rest-api-and-javascript)」と「[webhook イベントに応答するGitHub アプリの構築](/ja/apps/creating-github-apps/writing-code-for-a-github-app/building-a-github-app-that-responds-to-webhook-events)」を参照してください。\n\n#### レート制限を確認する\n\nOAuth appsとGitHub Appsのレート制限の違いを確認します。\nGitHub Apps では、レート制限にスライディング ルールを使用します。これは、組織内のリポジトリの数とユーザー数に基づいて増加する可能性があります。 詳しくは、「[GitHub アプリのレート制限](/ja/apps/creating-github-apps/registering-a-github-app/rate-limits-for-github-apps)」をご覧ください。\n\n可能であれば、条件付きの要求を使用し、ポーリングではなく Webhook へのサブスクライブによってレート制限内に留まるようにすることを検討してください。 条件付きの要求の詳細については、「[REST API を使用するためのベスト プラクティス](/ja/rest/using-the-rest-api/best-practices-for-using-the-rest-api)」を参照してください。\nGitHub Appでの Webhook の使用の詳細については、[GitHub Apps での Webhook の使用](/ja/apps/creating-github-apps/registering-a-github-app/using-webhooks-with-github-apps) と [webhook イベントに応答するGitHub アプリの構築](/ja/apps/creating-github-apps/writing-code-for-a-github-app/building-a-github-app-that-responds-to-webhook-events) に関するページを参照してください。\n\n#### コードをテストする\n\n新しい GitHub App をテストして、コードが期待どおりに動作することを確認します。\n\n### 4. 新しいGitHub Appを告知する\n\n他のアカウントで新しい GitHub Appを使用できるようにする場合は、アプリがパブリックであることを確認します。\nGitHub Appを見つけやすくするには、GitHub Marketplaceでアプリを一覧表示します。\n詳細については、「 [GitHub Marketplace for apps について](/ja/apps/github-marketplace/github-marketplace-overview/about-github-marketplace-for-apps) と [GitHub アプリをパブリックまたはプライベートにする](/ja/apps/creating-github-apps/registering-a-github-app/making-a-github-app-public-or-private)」を参照してください。\n\n### 5. ユーザーに移行を指示する\n\n新しい GitHub App の準備ができたら、古い OAuth app のユーザーに新しい GitHub Appに移行するように指示します。 ユーザーを自動的に移行する方法はありません。 各ユーザーは、自分で GitHub App をインストールまたは承認する必要があります。\n\nアプリの所有者は、ユーザーが新しい GitHub App をインストールまたは承認し、古い OAuth appの承認を取り消すように促す行動の呼び出しを含める必要があります。 ドキュメントまたはユーザー インターフェイス要素も更新する必要があります。\n\n#### ユーザーにGitHub Appのインストールを促す\n\nGitHub Appが自身の代わりに API 要求を行うか、組織またはリポジトリのリソースにアクセスする場合は、ユーザーがGitHub Appをインストールする必要があります。 ユーザーが自分のアカウントまたは組織に GitHub App をインストールすると、アプリがアクセスできるリポジトリを選択し、要求した組織とリポジトリのアクセス許可をアプリに付与します。\n\nユーザーが GitHub Appをインストールできるように、ユーザーがクリックして GitHub Appをインストールできるアプリの Web ページへのリンクを追加できます。 インストール URL の形式は `https://github.com/apps/YOUR_APP_NAME/installations/new` です。\n`YOUR_APP_NAME` を、GitHub App のスラッグ化された名前に置き換えてください。この名前は、GitHub App の設定ページにある［Public link］フィールドで確認できます。\n\nOAuth appがアクセスできるリポジトリを事前に選択するには、`/permissions`とクエリ パラメーターをインストール URL に追加します。 これにより、ユーザーは、GitHub Appが既にアクセスできるリポジトリへのOAuth appアクセス権を付与できます。 クエリ パラメーターは次のとおりです。\n\n* `suggested_target_id`: GitHub Appをインストールしているユーザーまたは組織の ID。 このパラメーターは必須です。\n* `repository_ids[]`: インストール用に選ぶリポジトリ ID。 省略すると、すべてのリポジトリが選ばれます。 事前選択できるリポジトリ数は、最大で100です。\n  OAuth appがアクセスできるリポジトリの一覧を取得するには、[認証済みユーザーのリスト リポジトリ](/ja/rest/repos/repos#list-repositories-for-the-authenticated-user)と [List 組織リポジトリ エンドポイント](/ja/rest/repos/repos#list-organization-repositories)を使用します。\n\nたとえば、 `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`と指定します。\n\nGitHub Appsのインストールの詳細については、「[個人向けアカウント用に GitHub Marketplace から GitHub アプリをインストールする](/ja/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-personal-account)、[Organization の GitHub Marketplace から GitHub アプリをインストールする](/ja/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations)、[サードパーティ製 GitHub App のインストール](/ja/apps/using-github-apps/installing-a-github-app-from-a-third-party)、[独自のGitHub アプリのインストール](/ja/apps/using-github-apps/installing-your-own-github-app)」を参照してください。\n\n#### アプリの承認をユーザーに求める\n\nGitHub Appがユーザーに代わって API 要求を行う場合、ユーザーはアプリを承認する必要があります。 ユーザーは、アプリを承認するときに、ユーザーの代わりに動作するためのアクセス許可をアプリに付与し、アプリから要求されたアカウント アクセス許可を付与します。 アプリが Organization アカウントにインストールされている場合、その Organization 内の各ユーザーは、アプリが自分の代わりに動作できるようにアプリを承認する必要があります。\n\nユーザーにアプリの承認を求めるために、Web アプリケーション フローまたはデバイス フローを介してユーザーを誘導します。 詳しくは、「[GitHub アプリのユーザー アクセス トークンの生成](/ja/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app)」をご覧ください。\n\nGitHub Appsの承認の詳細については、[GitHub アプリの承認](/ja/apps/using-github-apps/authorizing-github-apps) を参照してください。\n\n#### OAuth appアクセスを取り消すようユーザーに促す\n\nまた、古い OAuth appのアクセス権を取り消すようユーザーに勧める必要があります。 これは、 OAuth app から完全に移行するのに役立ち、ユーザーのデータのセキュリティを維持するのに役立ちます。 詳しくは、「[承認された OAuth アプリをレビューする](/ja/apps/oauth-apps/using-oauth-apps/reviewing-your-authorized-oauth-apps)」をご覧ください。\n\n#### インターフェイスまたはドキュメントを更新する\n\nOAuth appからGitHub Appへの変更を反映するように、アプリに関連するユーザー インターフェイスまたはドキュメントを更新する必要があります。\n\n### 6. 古い OAuth app の webhook を削除する\n\nユーザーが GitHub App をインストールし、リポジトリへのアクセスを許可する場合は、古い OAuth appの Webhook をすべて削除する必要があります。 新しい GitHub App と古い OAuth app が同じイベントの Webhook に応答すると、ユーザーは重複する動作を観察する可能性があります。\n\nリポジトリの Webhook を削除するには、`installation_repositories` アクションを使用して `added` Webhook を監視できます。\nGitHub Appがそのイベントを受け取ったら、REST API を使用して、OAuth appのこれらのリポジトリの Webhook を削除できます。 詳細については、「[Webhook のイベントとペイロード](/ja/webhooks/webhook-events-and-payloads?actionType=added#installation_repositories)」および「[リポジトリ ウェブフック の REST API エンドポイント](/ja/rest/repos/webhooks#delete-a-repository-webhook)」を参照してください。\n\n同様に、Organization の Webhook を削除するには、`installation` アクションを使用して `created` Webhook をリッスンできます。\nGitHub Appが組織のイベントを受け取ったら、REST API を使用して、その組織の Webhook とOAuth appの対応するリポジトリを削除できます。 詳細については、「[Webhook のイベントとペイロード](/ja/webhooks/webhook-events-and-payloads?actionType=created#installation)」、「[組織の Webhook の REST API エンドポイント](/ja/rest/orgs/webhooks#delete-an-organization-webhook)」、「[リポジトリ ウェブフック の REST API エンドポイント](/ja/rest/repos/webhooks#delete-a-repository-webhook)」を参照してください。\n\n### 7. 古いファイルを削除する OAuth app\n\nユーザーが新しい GitHub Appに移行したら、古い OAuth appを削除する必要があります。 これにより、 OAuth appの資格情報の不正使用を回避できます。 このアクションでは、 OAuth appの残りの承認もすべて取り消されます。 詳しくは、「[OAuth アプリの削除](/ja/apps/oauth-apps/maintaining-oauth-apps/deleting-an-oauth-app)」をご覧ください。\nOAuth appにGitHub Marketplaceが表示されている場合は、まずGitHub のサポートに連絡して、マーケットプレースからアプリを削除する必要があります。"}