Gitlab API:如何生成私有令牌

Gitlab API:如何生成私有令牌,api,curl,gitlab,gitlab-api,Api,Curl,Gitlab,Gitlab Api,这就是我所尝试的: curl http://git.ep.petrobras.com.br/api/v3/session --data-urlencode 'login=myUser&password=myPass' 答复: {“消息”:“401未经授权”} 问题在于data urlencodeCURL选项。由于它是一个HTTP帖子,您不需要URL编码数据,实际上是将&编码为&并导致您的问题。而是使用--data选项 curl http://git.ep.petrobras.co

这就是我所尝试的:

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

{“消息”:“401未经授权”}

问题在于
data urlencode
CURL选项。由于它是一个HTTP帖子,您不需要URL编码数据,实际上是将
&
编码为
&并导致您的问题。而是使用
--data
选项

curl http://git.ep.petrobras.com.br/api/v3/session --data 'login=myUser&password=myPass'
另外,通过普通HTTP发送凭据时要小心。它很容易被嗅出。

这就是为什么:

$ curl http://git.ep.petrobras.com.br/api/v3/session/ --data-urlencode 'login=myUser' --data-urlencode 'password=myPass'
如果您的用户名或密码包含必须进行URL编码的字符,Steven指出的解决方案不起作用。
name=content
格式将对
content
部分进行URL编码(必须对
name
部分进行URL编码,但是
login
password
都可以)

要实际检索
private_令牌
,您可以将curl的输出通过管道传输到jq中,如下所示:

$ curl [as above] | jq --raw-output .private_token
x_the_private_token_value_x
这样,您就可以轻松地在shell脚本中使用它


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

注意:从GitLab 8.6.0开始,此工作流不再有效,因为默认密码已被删除

更改日志:

我只是注意到了这一点并提出了这个问题。把这张纸条留在这里,希望能为其他人节省一些时间。希望这是一个将被审查和恢复的决定


讨论/问题:

对于阅读本文并想知道如何安全地做到这一点的人:curl很好地支持HTTPS,因此只需将协议替换为
HTTPS://
(假设您的gitlab服务器支持此功能)。Aral,我也遇到了这个问题。你找到解决办法了吗?