【问题标题】:Authenticating to VisualStudioOnline REST API with Personal Access Token using Python 3.6使用 Python 3.6 使用个人访问令牌对 VisualStudioOnline REST API 进行身份验证
【发布时间】:2017-12-24 19:35:59
【问题描述】:

我正在尝试通过 python 3.6 使用 VisualStudioOnline REST API。 (大量使用 python 2.x 的示例。)

python 脚本响应是通用的 html 登录页面。

我已经使用 REST 控制台 Chrome 插件测试了此脚本生成的 url,并且使用我的个人访问令牌运行良好。

import json
import base64
import urllib.request

personal_access_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

headers = {}
headers['Content-type'] = "application/json"
headers['Authorization'] = b'Basic ' + 
base64.b64encode(personal_access_token.encode('utf-8'))

instance = "mycompany.visualstudio.com"
project = "MyProject"
repository ="MyRepository"
pullrequest = "3468"
api_version = "3.0"

repositories_url = ("https://%s/DefaultCollection/%s/_apis/git/repositories?
api-version=%s" % (instance, project, api_version))
print(repositories_url)

request = urllib.request.Request(repositories_url, headers=headers)
opener = urllib.request.build_opener()
response = opener.open(request)
print(response.read())

Powershell 示例

How do I authenticate to Visual Studio Team Services with a Personal Access Token?

C# 和 curl 示例

https://www.visualstudio.com/en-us/docs/integrate/get-started/authentication/pats

【问题讨论】:

    标签: python-3.x azure-devops restful-authentication azure-devops-rest-api


    【解决方案1】:

    根据我通过其他类似机制执行此操作的经验,您必须在 PAT 上包含一个前导冒号,然后再进行 base64 编码。

    【讨论】:

    • 有效的新代码:personal_access_token = ":xxxxxxxxxxxxxxxxxxxxxxx"
    • 我投票任命@Daniel Mann 为 Microsoft 的技术作家,最低工资为 350 K + :))))) 他建议添加前导冒号可能节省了我数周的研究时间,而 Microsoft 文档此处的页面docs.microsoft.com/en-us/azure/devops/integrate/get-started/… 甚至没有尝试指出在编码之前需要使用访问令牌做什么。
    • 冒号是您可以任意选择的用户名和 PAT 本身之间的分隔符,在这种情况下,空字符串似乎是一个完全有效的用户名。
    猜你喜欢
    • 2014-02-11
    • 2023-03-20
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2023-01-29
    • 2017-04-11
    相关资源
    最近更新 更多