请忽略丑陋的Ruby代码,它仅用于说明我尝试使用GitHub API合并拉取请求。
def merge_pull_request(github_profile_name, repo_name, pull_request_number, personal_access_token)
uri = URI("https://api.github.com/repos/#{github_profile_name}/#{repo_name}/pulls/#{pull_request_number}/merge?personal_access_token=#{personal_access_token}")
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https') do |http|
request = Net::HTTP::Put.new uri
response = http.request request # Net::HTTPResponse object
puts response.body
end
end
当我输入正确的参数时,这是我得到的响应:
{"message":"Not Found","documentation_url":"https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button"}
发生了什么事?
答案 0 :(得分:1)
GitHub API的回应具有误导性。实际发生的是我的个人访问令牌未经授权来合并拉取请求。这对我来说是一个愚蠢的错误......我的个人访问令牌只是专门针对"用户范围"授权,但我忘了点击" repo范围"的复选框。 "作用域" GitHub是如何定义您是否可以访问特定字段(例如控制用户配置文件或合并Pull请求的能力),因此管理您的个人访问令牌非常重要如果您希望GitHub API运行,则可以正确使用范围。
您可以访问设置 - >来访问有关您的个人访问令牌的个人资料信息。个人访问令牌,然后编辑您的个人访问令牌以授予和撤销"范围"。