#python #rest #jira #jira-rest-api
#python #rest #jira #jira-rest-api
Вопрос:
Я пытаюсь использовать библиотеку Jira python для выполнения некоторых довольно простых вещей. Даже перед тем, как что-либо сделать, конструктор завершается с ошибкой.
address = 'https://myaddress.atlassian.net'
options = {'server': address}
un = 'my@user.com'
#un = 'my' #also doesn't work
pw = 'the_pasSword!'
cookie = (un, pw)
j = JIRA(options, basic_auth=cookie)
Это ВЕСЬ код.
Последняя строка завершается ошибкой с
ПРЕДУПРЕЖДЕНИЕ: root: получена восстанавливаемая ошибка из GET https://myaddress.atlassian.net/rest/api/2/serverInfo , повторит попытку [1/3] через 13.906688704524315с. Ошибка: 401
ПРЕДУПРЕЖДЕНИЕ: root: получена восстанавливаемая ошибка из GET https://myaddress.atlassian.net/rest/api/2/serverInfo , повторит попытку [2/3] в 4.071181495745648с. Ошибка: 401
ПРЕДУПРЕЖДЕНИЕ: root: получена восстанавливаемая ошибка из GET https://myaddress.atlassian.net/rest/api/2/serverInfo , повторит попытку [3/3] через 6.266303262421157с. Ошибка: 401
Попытка ввода учетных данных вручную в atlassian работает, и я могу войти в систему.
Есть идеи, почему эта очень простая попытка подключения не сработает?
Комментарии:
1. Это библиотека, которую вы используете? jira.readthedocs.io/en/master Похоже, что существует несколько способов аутентификации в JIRA, и это будет зависеть от того, как настроен ваш сервер JIRA.
Ответ №1:
Они обсуждали устаревшие пароли в basic auth. Попробуйте сгенерировать токен API и использовать его вместо вашего пароля.
address = 'https://myaddress.atlassian.net'
options = {'server': address}
un = 'my@user.com'
#un = 'my' #also doesn't work
token = 'the_tokEn'
cookie = (un, token)
j = JIRA(options, basic_auth=cookie)
Комментарии:
1. Это сработало! Однако… согласно developer.atlassian.com/cloud/jira/platform /… использование имени пользователя не будет поддерживаться, начиная с очень скоро. Что еще я должен сделать?
2. Похоже, вам следует просто продолжить и протестировать, используя идентификатор учетной записи, на который вы ссылались. Работает ли это при использовании этого?
3. В документах крайне неясно, что считается устаревшим. Связался с официальной поддержкой, и они сказали, что mail token продолжит работать, так что все, спасибо!
4. Начиная с 2020-01-03, он больше не работает с JIRA client версии 2.0.0, но все еще работает с вызовом curl: curl -v company.atlassian.net —электронная почта пользователя: токен
Ответ №2:
Пожалуйста, попробуйте этот код:
from jira.client import JIRA
import logging
import getpass
import datetime
import os
# Clearing the screen
os.system('cls||clear')
# Getting user authentication data
print 'Please enter your authentication data'
USER = raw_input('Username: ')
PASSWORD = getpass.getpass('Password: ')
print
JIRA_URL = "YOUR_JIRA_URL"
i = datetime.datetime.now()
TODAY = ("%s/%s/%s" % (i.day, i.month, i.year) )
def connect_jira(log, jira_server, jira_user, jira_password):
'''
Connects to JIRA
Returns None on error
'''
try:
log.info("Connecting to JIRA: %s" % jira_server)
jira_options = {'server': jira_server}
jira = JIRA(options=jira_options, basic_auth=(jira_user, jira_password))
# ^--- Note the tuple
return jira
except Exception,e:
log.error("Failed to connect to JIRA: %s" % e)
return e
# Creating logger
log = logging.getLogger(__name__)
# Creating a Jira connection object, jc
jc = connect_jira(log, JIRA_URL, USER, PASSWORD)
Комментарии:
1. ошибка 401. Почему это отличается? Журнал выводит html-код для страницы, на которой более или менее написано «ошибка 401»
2. @Gulzar Это работает на 100% при моей установке, но, как вы правильно выяснили в другом ответе, в новой версии Jira принимаются только токены.