Правильный синтаксис для request.get (библиотека python) для доступа к корпоративным учетным записям github. - PullRequest
0 голосов
/ 08 июня 2018

Я работаю с Python 2.7 + несколько библиотек Python (запросы & github3), чтобы получить доступ к моей учетной записи Github предприятия и управлять некоторыми URL-адресами.

Имя пользователя / токен, который я использую для доступаgithub принадлежит компании (корпоративная учетная запись github).

Далее приведены сведения о коде python и сообщения об ошибках, которые я получаю:

oauth_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
username = 'ENTERPRISE_GITHUB_USERNAME'
headers = {'Authorization': 'token {}'.format(oauth_token.rstrip())}
url='https://MY_CORPORATE_DOMAIN/api/v3/repos/GITHUB_ORG/GITHUB_REPO/hooks'
response = requests.get(url, auth=(username, oauth_token.rstrip()), \ headers=headers)

('Response: ', <Response [404]>)
'{"message":"Not Found","documentation_url":"https://developer.github.com \ /enterprise/2.12/v3/repos/hooks/#list-hooks"}'

Если я удаляю имя пользователя (так как я использую токен), я получаю это сообщение об ошибке:

response = requests.get(url, auth=(oauth_token.rstrip()), headers=headers)

{TypeError: 'str' object is not callable'}

Я уже удалил некоторую ошибку с токеном, потому что на самом деле это работает, когда я пытаюсь запросить другую информацию.Например, получить список репозиториев.

1013 * Пример: 1015 * oauth_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" организация = 'MY_ORGANIZATION' github3.enterprise_login (маркер = oauth_token.rstrip (), URL = 'https://MY_CORPORATE_DOMAIN') ответ = github_v3.repositories_by(организация)

выходные данные: это работает! (выходные данные перечисляют репозитории организации "MY_ORGANIZATION").

Итак, это потому, что я отбросил токен как основную причину.

Я думаю, что, вероятно, основная причина может быть связана с синтаксисом предложения «questions.get». Я имел в виду, поскольку имя пользователя / токен является корпоративным, синтаксис может быть другим (но я нене знаю, как это написать).

С другой стороны, если я использую свою личную учетную запись / токен github, это работает. Поэтому я считаю, что синтаксис "reports.get" должен бытьнемного иначе, когда мы используем корпоративные учетные записи github и публичные (бесплатные) учетные записи.

Например:

Чтобы настроить переменную "gh_login" для учетной записи предприятия, яиспользуйте:

gh_login = github3.enterprise_login(token=oauth_token.rstrip(),url='https://MY_CORPORATE_DOMAIN')

Но для публичной (бесплатной) учетной записи на github я бы использовал:

gh_login = github3.login(token=oauth_token.rstrip()) 

Оба они работают!

Поэтому возвращаясь ксубъект запросов. Получите, мой текущий синтаксис на самом деле работает для публичной (бесплатной) учетной записи github:

url='https://api.github.com/repos/GITHUB_ORG/GITHUB_REPO/hooks'
response = requests.get(url, auth=(username, oauth_token.rstrip()), headers=headers)

Но если я использую корпоративный домен, он не будет:

url='https://MY_CORPORATE_DOMAIN/api/v3/repos/GITHUB_ORG/GITHUB_REPO/hooks'
response = requests.get(url, auth=(username, oauth_token.rstrip()), headers=headers)

Обратите внимание, что в обоих случаях синтаксис "reports.get" одинаков.

Наконец, я уже прочитал официальную документацию (REST API v3) для корпоративных учетных записей, ноЯ не нашел правильный синтаксис:

https://developer.github.com/enterprise/2.13/v3/enterprise-admin/

Каким мог бы быть правильный синтаксис для request.get (для корпоративных учетных записей github) для решения вышеуказанных сообщений об ошибках?

спасибо большое!

1 Ответ

0 голосов
/ 09 июня 2018

Просто чтобы сообщить, что я уже нашел основную причину (и решение) для сообщения об ошибке 404 не найдено .

По сути, это произошло потому, что токен не был создан с помощьюразрешение admin: repo_hook .Итак, я создал новый токен с этим разрешением, и все работает гладко.

Я нашел эту информацию по следующей ссылке: https://github.com/octokit/rest.js/issues/155

спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...