【问题标题】:Which headers should I provide for authentication in GitHub API?我应该为 GitHub API 中的身份验证提供哪些标头?
【发布时间】:2017-05-26 16:46:38
【问题描述】:

我正在尝试在 GitHub API 中使用基本身份验证。我写了这样的东西:

reqURL = "https://api.github.com/repos/user/repo"
pullreqsURL = urllib.request.Request(reqURL)
pullreqsURL.add_header("Authorization", "Basic " + str(base64.urlsafe_b64encode(b'Username:myAuthTokenORpass')) )
pullreqsURL.add_header("Content-Type", "application/json")
pullreqsURL.add_header("Accept", "application/json")
urllib.request.urlopen(pullreqsURL)

但是,它不断抛出 HTTPError。
加上注释的第 3 行,一切顺利。

嗯。我已经使用个人令牌而不是 user:pass

解决了它
pullreqsURL.add_header("Authorization", "token >mytoken<" )

【问题讨论】:

  • 第 3 行引用有误,您的代码中是否存在?
  • 哦,对不起。没有。我已经编辑了问题。
  • 您是否真的在其中输入了“用户名:”,或者您是否使用了您的实际用户名?
  • 这个问题:stackoverflow.com/questions/6371032/… 是的!当然,我的实际参数,在将它们放入代码之前,我已经使用 curl 进行了测试。
  • 返回了什么 HTTP 错误代码?

标签: python api github


【解决方案1】:

应该可以验证via Basic Authentication with username/password
引用链接:

通过用户名和密码

要通过 GitHub API 使用基本身份验证,只需发送 与帐户关联的用户名和密码。

但是,我不懂 Python,所以我不知道 str(base64.urlsafe_b64encode(b'Username:myAuthTokenORpass')) 是否是 Base64 编码用户名/密码的正确方法。

正如您提到的个人访问令牌,也可以通过基本身份验证进行身份验证,但使用访问令牌而不是您的真实密码。

这在我的第一个链接中也有解释。
引用:

通过 OAuth 令牌

或者,您可以使用 personal access tokens 或 OAuth 令牌而不是您的密码。

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

如果您的工具仅支持 Basic,则此方法很有用 身份验证,但您想利用 OAuth 访问令牌 安全功能。

我在我的一个项目中成功地使用了这种方法。

【讨论】:

    猜你喜欢
    • 2020-05-26
    • 2016-03-09
    • 2017-05-08
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 2021-02-28
    相关资源
    最近更新 更多