Использование персонального токена доступа для манипуляций с хранилищем API Azure Devops - PullRequest
0 голосов
/ 28 октября 2019

Я сгенерировал личный токен доступа из пользовательского интерфейса 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)

ответ всегда 203 со страницей входа HTML. Это то, что я ожидал увидеть, если бы у меня не было токена доступа в заголовке.

Я пробовал «Несущий» вместо «базовый», я пытался добавить {username}: {token} и многие другие маленькие хитрости.

Что я делаю не так?

1 Ответ

3 голосов
/ 28 октября 2019

Я только что записал следующий код, который работал для меня:

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
...