github.GithubException.GithubException: 401 на Heroku, когда вы хотите создать репо в общедоступном репозитории пользователя - Github API

Я делаю это приложение, используя python, Flask_OAuthlib и heroku, чтобы получить доступ к общедоступному репо пользователя Github, создать репо и скопировать туда необходимые файлы. Приложение подключается и получает следующие разрешения как авторизованное приложение OAuth.

Затем у меня есть этот фрагмент кода для создания репозитория в общедоступном пространстве репозиториев Github пользователя и копирования туда некоторых файлов.

177   @app.route('/replicate', methods=['GET', 'POST'])
178   def replicate():
179  
170       g = Github(theToken)
181       repo_name = request.form['repo']
182       user = g.get_user()
183       repo = user.create_repo(repo_name)  

Этот код срабатывает, когда пользователь нажимает кнопку, и эта кнопка доступна только при входе в систему, а приложение показывает имя пользователя и изображения профиля из своего Github. Поэтому в сеансе с Github это очень хорошо. Но затем героку делает эту ошибку:

Я вижу, что возникла проблема с аутентификацией. theTokenфиксируется таким образом. Сначала я создалtheToken=None вверху моего кода, затем в /login часть я фиксирую, как показано ниже:

78   @github.tokengetter
79   def get_github_oauth_token():
80       theToken = session.get('github_token')
81       return session.get('github_token')

Интересно, чего мне здесь не хватает. Спасибо за вашу помощь

1 ответ

Я мог разобраться в проблеме. По какой-то причине определение глобальной переменной для полученияtheTokenи использовать его позже не помогло. Я просто переместил линию80 ровняться 179и теперь он работает очень хорошо! ах, и с небольшой поправкой:theToken = session.get('github_token')[0], потому что функция get возвращает кортеж длиной 2, для которого первое значение является токеном доступа, а второе - секретным ключом.

Надеюсь, этот вопрос и ответ могут помочь кому-то в будущем!

Другие вопросы по тегам