我正在尝试使用在
上找到的create hook api创建一个钩子http://developer.github.com/v3/repos/hooks/create-a-hook
但是当我试图发布时,我得到了301,所以我确信我做错了…
有几个问题…
1) github如何知道我可以为该回购创建一个钩子,如果它是私有的?我确信我需要使用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创建一个钩子吗?
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命令。你发布的URL必须是https://api.github.com/:endpoint
,在这种情况下,:endpoint
是repos/username/reponame/hooks
。您还需要在curl命令的JSON主体周围使用'
s,否则您将获得"{ "
之类的字符串与name
, cia
, active
, events
等命令的输出连接。
另外,-u :username
选项对于curl是必需的,因此它将告诉curl必须进行身份验证,并要求您提供密码。
如果你不介意你的密码在你的bash历史记录(你应该),你也可以做-u username:password
。或者更好的是,您可以以username:password
的形式对凭证进行base64编码,然后将其作为标头发送,如:Authentication: Basic <base64-encoded-credentials
.