代码之家  ›  专栏  ›  技术社区  ›  Rudy

使用Oauth头向Jira REST API发送请求-响应401“匿名用户”错误

  •  0
  • Rudy  · 技术社区  · 7 年前

    我正在构建一个web应用程序,它将有一个提交错误报告的表单。bug提交表单在提交时,使用 jira/rest/api/2/发布 端点,根据用户在表单中输入的内容创建单个问题。

    我已经针对JIRA实例验证了我的应用程序,并获得了一个Oauth承载令牌,以包含在HTTP请求头中。但是,当启动此POST请求时,我收到一个401错误,并显示以下错误消息:

    匿名用户无权在此项目中创建问题。请先尝试登录。

    我不确定为什么JIRA服务器认为这个请求是匿名的,因为请求包含了包含Oauth令牌的“Authorization”头,我认为应该将请求作为特定用户进行身份验证。但也许我误解了Oauth令牌和JIRA实例之间的关系。

    这就是触发请求的函数的外观(使用React):

      submitBug() {
        var jira_create_issue_api_url = "https://placeholder.org/jira/rest/api/2/issue";
        var xhttp = new XMLHttpRequest();
    
        xhttp.open("POST", jira_create_issue_api_url, true); //async POST to API resource
    
        xhttp.setRequestHeader("Content-type", "application/json");
        xhttp.setRequestHeader("Accept", "application/json");
        xhttp.setRequestHeader("X-Atlassian-Token", "no-check");
        xhttp.setRequestHeader("Authorization", "Bearer <oauth token here>");
    
        xhttp.onload = () => {
          console.log("JIRA REST API responded: ");
          console.log(xhttp.status);
          console.log(xhttp.response);
        };
    
        var summary_text = this.props.bug_summary; //filled out by user in form
        var desc_text = this.state.bug_description; //filled out by user in form
    
        var bug_data = {
          fields: {
            project: {
              key: "KEY"
            },
            summary: summary_text,
            description: desc_text,
            issuetype: {
              name: "Bug"
            }
          }
        };
        xhttp.send(JSON.stringify(bug_data)); 
      }
    

    任何洞察都是非常感激的!我是用JIRA REST API开发的新手,所以可能遗漏了一些显而易见的东西。

    编辑 :根据要求,标题显示在Chrome中:

    接受:应用程序/json

    授权:持票人[这里是oauth令牌]

    内容类型:application/json

    来源:[app url]

    引用程序:[app url]

    用户代理:[浏览器特定信息]

    X-Atlassian-Token:不检查

    0 回复  |  直到 7 年前