2

我正在尝试使用在上找到的 create hook api 创建一个钩子

http://developer.github.com/v3/repos/hooks/#create-a-hook

但是当我尝试发布时我得到了 301,所以我确定我做错了......

几个问题...

1)如果它是私有的,github如何知道我可以为该repo创建一个钩子?我确定我需要通过 POST 进行身份验证,但是如何?

2) 以下 curl 语句是如何创建钩子的有效示例吗?

 curl -v -H "Content-Type: application/json" -X POST -d "{ "name": "cia", 
 "active": true, "events": [ "push" ], "config": { 
 "url": "http://requestb.in/######", "content_type": "json" } }"
  http://github.com/repos/#####/#####/hooks

为了安全起见,我用#####替换了某些元素......

3) 如果上述内容不正确,我可以提供一个有效示例的片段来为名为“cia”的 webhook 创建一个钩子吗?

4

1 回答 1

7
curl -usigmavirus24 -v -H "Content-Type: application/json" -X POST -d '{"name": "cia", "active": true, "events": ["push"], "config": {"url": "...", "content_type": "json"}}' https://api.github.com/repos/sigmavirus24/reponame/hooks

是正确的 curl 命令。在这种情况下https://api.github.com/:endpoint,您发布到的 URL 必须是. 您还需要在 curl 命令的 JSON 主体周围使用 s ,否则您将获得与, , ,等命令的输出连接起来的字符串。:endpointrepos/username/reponame/hooks'"{ "nameciaactiveevents

-u :username选项也是 curl 所必需的,因此它会告诉 curl 它必须进行身份验证并要求您输入密码才能这样做。

如果您不介意密码出现在您的 bash 历史记录中(您应该这样做),您也可以执行-u username:password. 或者更好的是,您可以对表单中的凭据进行 base64 编码username:password,然后将其作为标头发送,如下所示Authentication: Basic <base64-encoded-credentials

于 2013-04-19T15:40:23.053 回答