无法使用Github API向评论请求发布评论

时间:2018-10-29 14:23:01

标签: github-api

我正在使用GitHub API创建注释以提取请求。

此之后:

我不想评论特定的代码行,而只是评论PR本身。例如说“感谢您的PR @author”

// Using Joomla Http library that uses cURL internally
$http = new HttpRequest;

// The url variables below are set to the respective correct values
$url  = "https://api.github.com/repos/{$owner}/{$repo}/issues/{$number}/comments";

// Method: post($url, $data, $headers);
$resp = $http->post($url, array('body' => 'Thanks for your PR @author'), array('Authorization' => 'token ' . PERSONAL_ACCESS_TOKEN));

这将返回以下错误:

{
    "message": "Invalid request.\n\nFor 'links/0/schema', nil is not an object.",
    "documentation_url": "https://developer.github.com/v3/issues/comments/#create-a-comment"
}

我在文档中读到的links并未作为该请求的参数提及,因此这使我更加困惑。

PS:所有其他操作,例如获取评论列表,获取评论列表,删除评论,向PR添加标签,从PR删除标签等,都可以正常工作。

我发现他们在某处说需要其他身份验证才能发表评论。我不确定这到底意味着什么以及如何实现。

我只有Personal Access Token来验证我的请求。

请告知我所缺少的内容。

1 个答案:

答案 0 :(得分:0)

我能够使用issues api而不是pull-request来发表评论

    public function comment($message)
    {
        $http = new HttpRequest;

        $url     = "https://api.github.com/repos/{$this->owner}/{$this->repo}/issues/{$this->num}/comments";
        $headers = array(
            'Content-Type'  => 'application/json;charset=utf-8',
            'Authorization' => 'token ' . GITHUB_ACCESS_TOKEN,
        );
        $resp    = $http->post($url, json_encode(array('body' => $message)), $headers);

        return $resp->code == 201 ? $resp : null;
    }

内部库的一部分中的HttpRequest类在这里不是很重要。您应该可以使用任何Http传输方法。

只有重要的内容是请求网址标题请求数据

确保为使用中的ACCESS_TOKEN分配了正确的权限。我现在不记得了,当我有机会看看时会在这里添加。