我正在尝试使用
上的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创建一个钩子?
答案 0 :(得分:6)
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
,其中:endpoint
在这种情况下为repos/username/reponame/hooks
。您还需要在JSON正文周围使用'
作为curl命令,否则您将获得"{ "
之类的字符串与name
,cia
等命令的输出相连接,active
,events
等
curl还需要-u :username
选项,因此它会告诉curl它必须进行身份验证并要求您输入密码。
如果您不介意密码在您的bash历史记录中(您应该这样做),您也可以-u username:password
。或者甚至更好,您可以使用username:password
格式对您的凭据进行base64编码,然后将其作为标题发送,如下所示:Authentication: Basic <base64-encoded-credentials
。