我正在向GitHub API发送有效的PUT请求,但GitHub没有合并我的pull请求

时间:2016-11-04 02:14:01

标签: ruby github-api

请忽略丑陋的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"}

发生了什么事?

1 个答案:

答案 0 :(得分:1)

GitHub API的回应具有误导性。实际发生的是我的个人访问令牌未经授权来合并拉取请求。这对我来说是一个愚蠢的错误......我的个人访问令牌只是专门针对"用户范围"授权,但我忘了点击" repo范围"的复选框。 "作用域" GitHub是如何定义您是否可以访问特定字段(例如控制用户配置文件或合并Pull请求的能力),因此管理您的个人访问令牌非常重要如果您希望GitHub API运行,则可以正确使用范围。

您可以访问设置 - >来访问有关您的个人访问令牌的个人资料信息。个人访问令牌,然后编辑您的个人访问令牌以授予和撤销"范围"。