21

GitHub API http://developer.github.com/v3/に慣れてきました。Firefox 用の RESTClient プラグインと curl コマンド ライン ツールの両方を試しています。

API を使用してリポジトリを作成する方法を見つけましたが、API を使用してリポジトリを削除できないようです。

ここのヘルプによると: http://developer.github.com/v3/repos/#delete-a-repository次のような DELETE リクエストを送信する必要があります:

curl -X DELETE -H 'Authorization: token xxx' https://api.github.com/repos/:owner/:repo

ヘルプでは指定されておらず、:owner と :repo の意味がわかりません。これらが名前なのか ID なのかはわかりませんが、名前と ID の両方をいくつかの組み合わせで試してみましたが、成功しませんでした。私が応答として受け取るものは次のとおりです。

404 Not Found

私は何が欠けていますか?

4

2 に答える 2

27

[アプリケーション] ページで使用しているトークンを作成した場合、このトークンには次のスコープがあります: userpublic_repo、。これを確認するには、そのトークンを使用して API 要求を行い、応答の HTTP ヘッダーを調べます。repogist

curl -v -H 'Authorization: token xxx' https://api.github.com

X-OAuth-Scopesスコープのリストを含む応答ヘッダーを探します。

X-OAuth-Scopes: user, public_repo, repo, gist

ただし、リポジトリを削除するには、トークンにdelete_repoスコープが必要です。

そのため、所有しているスコープとは異なるスコープを持つトークンが必要です。Authorizations APIを使用して、このようなトークンを作成できます。

curl -v -u username -X POST https://api.github.com/authorizations -d '{"scopes":["delete_repo"], "note":"token with delete repo scope"}'

これにより、リポジトリの削除に使用できる新しいトークンを含む JSON ドキュメントが返されます。

{
  "id": XXXXX,
  "url": "https://api.github.com/authorizations/XXXXX",
  "app": {
    "name": "GitHub API",
    "url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api",
    "client_id": "00000000000000000000"
  },
  "token": "XXXXXX",
  "note": "token with delete repo scope",
  "note_url": null,
  "created_at": "2013-10-11T20:34:49Z",
  "updated_at": "2013-10-11T20:34:49Z",
  "scopes": [
    "delete_repo"
  ]
}

もちろん、この方法でトークンを作成する場合、スコープだけでなく、複数のスコープを要求できますdelete_repo

また、補足として、適切な権限がない場合に API が 404 エラーを返すのは、情報漏えいを防ぐためです。

于 2013-10-11T20:48:55.973 に答える
20

To delete a GitHub repo:

curl \
  -X DELETE \
  -H "Accept: application/vnd.github.v3+json" \
  -H "Authorization: token ${token}" \
   https://api.github.com/repos/${username}/${reponame}

Define or replace ${token}, ${username}, and ${reponame}. The token must have access to the delete_repo scope.

于 2015-06-04T12:41:53.557 に答える