Я работаю с 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) для решения вышеуказанных сообщений об ошибках?
спасибо большое!