Gitlab API:如何生成私有令牌

rod*_*pes 14 api curl gitlab gitlab-api

这是我试过的:

curl http://git.ep.petrobras.com.br/api/v3/session --data-urlencode 'login=myUser&password=myPass'
Run Code Online (Sandbox Code Playgroud)

回答:

{"message":"401 Unauthorized"}

Ste*_*n V 17

问题是data-urlencodeCURL选项.因为它是一个HTTP POST你不需要URL编码的数据,实际上是编码&&,造成您的问题.而是使用该--data选项.

curl http://git.ep.petrobras.com.br/api/v3/session --data 'login=myUser&password=myPass'
Run Code Online (Sandbox Code Playgroud)

另外,要小心通过普通HTTP发送凭据.它很容易被嗅到.

  • 对于读这篇文章的人并想知道如何安全地执行此操作:curl支持HTTPS就好了,所以只需用`https://`替换协议(假设你的gitlab服务器支持这个). (5认同)

jos*_*sch 9

这是如何:

$ curl http://git.ep.petrobras.com.br/api/v3/session/ --data-urlencode 'login=myUser' --data-urlencode 'password=myPass'
Run Code Online (Sandbox Code Playgroud)

如果您的用户名或密码包含必须以urleencoded编码的字符,则Steven指出的解决方案不起作用.该name=content格式将进行urlencode的content部分(name部分已被url编码,但loginpassword没有关系).

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

$ curl [as above] | jq --raw-output .private_token
x_the_private_token_value_x
Run Code Online (Sandbox Code Playgroud)

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

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