Gitlab API:如何生成私有令牌

时间:2014-05-13 20:27:40

标签: api curl gitlab gitlab-api

这就是我的尝试:

curl http://git.ep.petrobras.com.br/api/v3/session --data-urlencode 'login=myUser&password=myPass'

答案:

{"message":"401 Unauthorized"}

3 个答案:

答案 0 :(得分:16)

问题是data-urlencode CURL选项。由于它是一个HTTP POST,因此您不需要对数据进行网址编码,实际上是将&编码为&并导致您的问题。而是使用--data选项。

curl http://git.ep.petrobras.com.br/api/v3/session --data 'login=myUser&password=myPass'

另外,请注意通过普通HTTP发送凭据。它很容易被嗅到。

答案 1 :(得分:9)

这是:

$ curl http://git.ep.petrobras.com.br/api/v3/session/ --data-urlencode 'login=myUser' --data-urlencode 'password=myPass'

如果您的用户名或密码包含必须以urleencoded编码的字符,则Steven指出的解决方案不起作用。 name=content格式会对content部分进行urlencode(name部分必须是urlencoded,但loginpassword都可以。)

要实际检索private_token,您可以将curl的输出传输到jq,如下所示:

$ curl [as above] | jq --raw-output .private_token
x_the_private_token_value_x

这样您就可以在shell脚本中轻松使用它。

另外,正如Steven已经指出的那样,请改用https,这样你的密码就不会通过网络以明文形式传输。

答案 2 :(得分:1)

注意:此工作流程不再适用于GitLab 8.6.0,因为已删除默认密码。

更改日志:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG#L205

我只是注意到这一点并提出了问题。留下这个笔记,希望能节省一些时间。希望这是一个将被审查和恢复的决定。

讨论/问题:https://gitlab.com/gitlab-org/gitlab-ce/issues/1980