Персональный токен доступа Github для доступа к частному репозиторию: / repos /: user /: repo / content - PullRequest
1 голос
/ 05 ноября 2019

Я пытаюсь использовать личный токен доступа для доступа к содержимому хранилища.

Если хранилище общедоступно, я могу добиться этого как с v3и с v4 api. Оба запроса ниже возвращают содержимое:

v3:

curl https://api.github.com/repos/w3c/webappsec/contents/

v4:

query {
  repository(owner: "w3c", name: "webappsec") {
    object(expression: "master:") {
      ... on Tree {
        entries{
          name
        }
      }
    }
  }
}

СейчасЯ сгенерировал личный токен доступа для выполнения этой операции в одном из моих личных репозиториев, но он никогда ничего не возвращает:

v3 (с токеном авторизации):

curl -H "Authorization: bearer myauthorizationtoken" https://api.github.com/repos/myusername/myrepo/contents/

Результат:

{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3/repos/contents/#get-contents"
}

v4 (с токеном авторизации):

query {
  repository(owner: "myusername", name: "myrepo") {
    object(expression: "master:") {
      ... on Tree {
        entries{
          name
        }
      }
    }
  }
}

Результат:

{
  "data": {
    "repository": {
      "object": null
    }
  }
}

Я пробовалпроверка всех read флажков при генерации токена, но ничего. Что я делаю не так?

1 Ответ

2 голосов
/ 06 ноября 2019

Похоже, для получения этой информации требуются все права доступа repo для токена.

Работает для меня:

 [x] repo Full control of private repositories
     [x] repo:status Access commit status
     [x] repo_deployment Access deployment status
     [x] public_repo Access public repositories
     [x] repo:invite Access repository invitations

Флажки прав

Использование API v3:

$ curl -H "Authorization: bearer $private_token" https://api.github.com/repos/dmytrohoi/site.source/contents/

[
  {
    "name": ".github",
    "path": ".github",
    "sha": "hash",
    "size": 0,
    "url": "https://api.github.com/repos/dmytrohoi/site.source/contents/.github?ref=master",
    "html_url": "https://github.com/dmytrohoi/site.source/tree/master/.github",
    "git_url": "https://api.github.com/repos/dmytrohoi/site.source/git/trees/hash",
    "download_url": null,
    "type": "dir",
    "_links": {
      "self": "https://api.github.com/repos/dmytrohoi/site.source/contents/.github?ref=master",
      "git": "https://api.github.com/repos/dmytrohoi/site.source/git/trees/hash",
      "html": "https://github.com/dmytrohoi/site.source/tree/master/.github"
    }
  },
...
]
...