尝试通过API首次访问我大学的GitLab(我是仓库的所有者,但无法访问控制台,无法编辑配置文件或重新启动服务器),我似乎缺少一些必修的基础知识。尝试将Ruby(无轨)与Narkoz API包装器一起使用。不幸的是,没有可用的教程可以解释第一步:
如何使用UID + passwd连接到服务器并进行身份验证?
有人可以用易于理解的说明来解释该过程吗? GitLab Manual对我没有帮助。
我希望我能弄清楚如何将GitLab用户添加到我的存储库。不想使用Web界面添加100个用户。
答案 0 :(得分:1)
您链接的手动输入用于使用第三方OAuth提供程序登录GitLab,这听起来不像您要执行的操作。听起来您想做的是request an OAuth token,然后可以使用它来访问GitLab的API。
从文档中:
在此流程中,请求令牌以换取资源所有者凭证(用户名和密码)。仅当资源所有者和客户端之间存在高度信任时(例如,客户端是设备操作系统的一部分或高度特权的应用程序),并且其他授权授予类型不可用时,才应使用凭据。作为授权码)。
听起来像您想要做的事。
文档中需要注意的重要一件事:
弃用注意事项:从GitLab 8.11开始,已针对启用了双重身份验证的用户禁用了资源所有者密码凭证。这些用户可以改用personal access tokens访问API。
在这种情况下,以下操作将无效,而您需要生成访问令牌。
1。请求访问令牌
向/ oauth / token发送带有参数的POST请求:
{ "grant_type" : "password", "username" : "user@example.com", "password" : "secret" }
然后,您将在响应中返回访问令牌:
{ "access_token": "1f0af717251950dbd4d73154fdf0a474a5c5119adad999683f5b450c460726aa", "token_type": "bearer", "expires_in": 7200 }
然后,您将此令牌分配为您的GitLab.private_token
。
答案 1 :(得分:0)
出于记录目的-最快可以帮助您的是一个最小的可行示例-尤其是因为API文档包含已知的而非固定的错误。
host = myGitlabServer
require 'oauth2'
client = OAuth2::Client.new(clientIdFromGitLab, clientSecretFromGitLab, :site => host)
accessToken = client.password.get_token(myGitLabUid, myGitLabPassword)
require 'httparty'
# get own user data
response = HTTParty.get(host + '/api/v4/user?access_token=' + accessToken.token)
puts response.parsed_response
# get user data by user name
response = HTTParty.get(host + '/api/v4/users?username=' + username + '&access_token=' + access_token.token)
puts response.parsed_response[0]
# add user as reporter to project
response = HTTParty.post(host + '/api/v4/projects/' + projectId + '/members/?user_id=' + newUID + '&access_level=20&access_token=' + access_token.token)
puts response.parsed_response