django - 通过 OAuth 2.0 (3LO) 应用创建 Jira 问题失败并出现错误 {"code":401,"message":"Unauthorized"}
问题描述
我是一名实习开发人员,我正在将产品与 Jira 软件(云)集成。我正在使用python和Django Web 框架进行开发。
我遵循了https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/文档并成功收到了访问令牌。我遵循的步骤是:
- 在开发者控制台中创建了一个 OAuth 2.0 (3LO) 应用程序。为“Jira 平台 REST API”和“用户身份 API”配置了权限。我选择了旋转刷新令牌选项。将回调 URL 添加为“http://localhost:8000/callback”</li>
- 引导用户访问授权 URL 以获取授权码。在Authorization URL中范围定义如下:
scope = ['write:jira-work read:jira-user read:me read:jira-work'] - 作为响应接收代码和状态变量。
- 将代码值交换为访问令牌。收到的响应如下:
{"access_token":"令牌值出现在这里","scope":"write:jira-work read:jira-work read:jira-user read:me","expires_in":3600,"token_type":"Bearer" }
使用访问令牌成功接收到 could_id。
header = {'Authorization': 'Bearer {}'.format(client.token['access_token']), 'Accept': 'application/json'} response = requests.get('https://api.atlassian.com/oauth/token/accessible-resources', headers=header)
成功检索了经过身份验证的用户的公共配置文件。
response = requests.get('https://api.atlassian.com/me', headers=header)
当我尝试创建问题时,最终出现以下错误: {"code":401,"message":"Unauthorized"}。我指的是https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-post 我正在使用电子邮件(logged-在用户电子邮件中)和 API 令牌进行授权。我的 auth 参数有问题吗?如果您能帮助我找出此错误的原因,那就太好了。
创建问题的python代码:
def post_issue(request):
if request.method == 'POST':
project = request.POST['project']
issue_type = request.POST['issue_type']
summary = request.POST['summary']
email = request.session['profile']['email']
token = request.session['access_token']
header1 = {'Accept':'application/json','Content-Type':'application/json'}
data = { 'fields':
{'project':{'name':project},
'summary': summary,
'issuetype':{'name': issue_type}
}
}
response = requests.request('POST', url='https://api.atlassian.com/ex/jira/%s/rest/api/3/issue'%(request.session.get('cloud_id')), data = json.dumps(data), headers=header1 , auth=HTTPBasicAuth(email,token))
if response.status_code == 201:
print('Successfully created Issue')
else:
print('Could not create Issue')
print('Response:', response.content)
解决方案
推荐阅读
- python - 如何将直方图颜色设置为渐变?
- django - 为什么我的训练模型字典不能准确预测?
- docker - 是什么让应用程序成为 sidecar?
- mysql - 简单的mysql问题:这个关系怎么办?
- react-native - Picker 的选项值位置在 IOS 版本上不对齐
- python - 如何使用搅拌机输入一系列(xyz)坐标并输出 3D 形状?
- c# - 在 DbContext 上启动了第二个操作
- excel - 使用 Excel VBA 在工作簿中查找匹配项:运行时错误 1004
- javascript - HTML 和 Javascript “汉堡菜单”不起作用
- c - 指向常量数据的常量指针是否合法?