使用个人访问令牌进行 azure devops API 存储库操作

Ric*_*r32 1 python request access-token azure-devops azure-devops-rest-api

我已从 Azure Devops 用户界面生成了个人访问令牌,但无法使用它向 Devops API 发出请求。

我尝试了许多不同的标头字段,但我总是被重定向到登录页面,就好像我没有经过身份验证一样。

token = #Token generated on Devops project page
token_bytes = token.encode('utf-8')
token64 = base64.b64encode(token_bytes)
authorization_string = "basic " + str(token64)

repo_endpoint_url = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=5.1".format(organization=organization, project=project)

headers = {"Content-Type" : "application/json", "Authorization" : authorization_string}

response = requests.get(repo_endpoint_url, headers)
Run Code Online (Sandbox Code Playgroud)

响应始终为 203,登录页面为 HTML。如果标头中没有访问令牌,这就是我期望看到的内容。

我尝试过使用“Bearer”而不是“basic”,我尝试过添加 {username}:{token} 以及许多其他小调整。

我究竟做错了什么?

DSp*_*rit 9

我刚刚剪贴簿了以下对我有用的代码:

import requests
import base64

repo_endpoint_url = "https://dev.azure.com/<organization>/<project>/_apis/git/repositories?api-version=5.1"

username = "" # This can be an arbitrary value or you can just let it empty
password = "<your-password-here>"
userpass = username + ":" + password
b64 = base64.b64encode(userpass.encode()).decode()
headers = {"Authorization" : "Basic %s" % b64} 

response = requests.get(repo_endpoint_url, headers=headers)
print(response.status_code) # Expect 200
Run Code Online (Sandbox Code Playgroud)