【问题标题】:Unable to call github APIs given username and password给定用户名和密码,无法调用 github API
【发布时间】:2019-05-23 02:24:07
【问题描述】:

我正在尝试将 Github API 调用到我工作的公司的 Github Enterprise Server。当我使用个人访问令牌时,API 调用有效,但每次我使用用户名和密码时,都会收到 HTTP 401 错误消息“必须进行身份验证才能使用此 API”。

我尝试使用以下工具:

  • 卷曲

示例调用:

curl --proxy $PROXY -i --user "xx-xx" https://github.xxx.xxx.com/api/v3/users

示例代码:

gh = Github('my-user', password='....', base_url='https://github.xxx.xxx.com/api/v3/users')

示例代码

r = requests.get('https://github.xxx.xxx.com', auth=('my-user','....'), proxies=proxyDict) 

如果我使用HTTPBasicAuthHTTPDigestAuth 都不起作用

公司 github 网站是通过 SAML 进行身份验证的,所以我想知道这是否是 SAML 相关问题。

【问题讨论】:

    标签: python github-api github-enterprise


    【解决方案1】:

    Github 不允许 http/https 身份验证。 (对于 bitbucket 和 gitlab 相同)。我学得很辛苦。

    您可能希望使用基于 ssh 公钥的身份验证。

    【讨论】:

    【解决方案2】:

    Github API 支持 RFC2617 中定义的基本身份验证以及一些小的 differences

    cURL 示例:

    curl -u username https://api.github.com/user
    

    cURL 会提示你输入密码。

    PyGitHub 示例:

    g = Github("user", "password")
    for repo in g.get_user().get_repos():
        print(repo.name)
    

    请求示例:

    response = requests.get('https://api.github.com/user', auth=('username', 'password'))
    

    我建议使用 PyGitHub 而不是 Requests。还有 Postman,它是一个不错的 cURL 替代品来尝试。

    【讨论】:

    • 我尝试了你的代码的变体,但它不起作用,这就是为什么在 Stackover 上发布。
    • 我刚刚测试了请求示例并且它正在工作。只需将用户名替换为您的用户名,密码替换为您的密码即可。例如,如果您的用户名是benny,而您的密码是benny123,则执行response = requests.get('https://api.github.com/user', auth=('benny', 'benny123'))。如果你在做auth=('benny', 'password=benny123') 那么这就是问题所在。
    • 我很抱歉造成混乱。我有一个错字。我猜它不起作用,因为它是 Github Enterprise
    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2016-07-05
    • 2012-06-16
    相关资源
    最近更新 更多