TFS REST上传附件权限问题

时间:2016-06-22 07:08:47

标签: python rest tfs permissions

我正在为我们的服务实施TFS。我正在使用OAuth2,它的工作就像一个魅力。我正在请求权限范围“ vso.work_write vso.project ”,但不知怎的,我无法上传附件。我从服务器上获得403 Forbidden。由于MS文档中充满了关于此主题的漏洞,如果我的范围权限是否正常,也许有人会指出?我应该将哪个添加到我的身份验证

这可能并不重要,但我正在使用Nginx / Python,并使用标准的Request lib发出请求。

代码示例:

def __auth(self):
        return "Bearer " + self.token  

def __makeUrl(self, resource, project=None):
        if project:
            return (self.baseurl % (self.domain, "%s/" % project)) + resource
        else:
            return (self.baseurl % (self.domain, "")) + resource

将发出请求的代码:

headers={'Accept': 'application/json',
                     'Authorization': self.__auth()}

url = self.__makeUrl(("/wit/attachments?fileName=%s&api-version=1.0" % fileName), self.project)
response = self.client.post(url, base64.b64encode(filecontent), headers=headers)

负责代码。我几乎可以肯定生成URL是正常的,因为我对其他请求使用相同的逻辑(e.q。项目和项目类型读取)

我真的可以向正确的方向发展。

1 个答案:

答案 0 :(得分:0)

所以....这个很痛苦,但看起来我在上传附件时不需要URL中的项目名称。那是错误的。范围权限很好。 (目前我正在测试所有已启用的功能)但如果有些不同,我会发布我的最终状态。

太糟糕的服务并没有为调试提供更多有用的信息。

所以,如果有人有类似的问题,请确保你仔细检查你的URL,因为它不是通过所有请求的恒定格式。

还要确保/ wit / attachments?filename是小写字母。与文档一样,您可以在两种格式中找到它。

看起来我必须上传没有base64编码的图片。这是从我用于读取图像内容数据的S3存储库自动完成的。