jira-ruby插件:传递API令牌而不是用户名和密码

时间:2018-03-16 12:38:13

标签: ruby jira

我正在使用jira-ruby宝石。

require 'jira-ruby'

options = {
:username     => 'xxxxxxxx',
:password     => '********',
:site         => 'https://xxx.yyyy.com',
:context_path => '',
:auth_type    => :basic,
:use_ssl => true
}

client = JIRA::Client.new(options)
project = client.Project.find('P-NAME')

project.issues.each do |issue|
  puts "#{issue.id} - #{issue.summary}"
end

这里不是传递用户名和密码,而是想传递API令牌。我怎么能这样做?????

正常的curl命令工作正常:

curl -X GET -H "Authorization: Basic <TOKEN>" "https://<URL HERE>/rest/api/2/issue/<ID>"

3 个答案:

答案 0 :(得分:0)

我发现文档在这方面确实不清楚。到目前为止,这对我有用:

options = {
  :site             => 'https://my.jira.site',
  :context_path     => '/my_jira_path',
  :auth_type        => :oauth,
  :consumer_key     => 'jira_consumer_key_name',
  :consumer_secret  => 'jira_consumer_key_secret',
  :access_token     => 'jira_oauth_access_token',
  :access_secret    => 'jira_oauth_access_secret',
  :private_key_file => 'path/to/private_key_file',
}

在我的情况下,我通过oauth身份验证手动预先授权了我的应用程序Jira,因为这是一个不允许回调获取令牌身份验证的脚本,因此我使用了{{1} }和access_token以这种方式获得。

使用access_secret创建客户端后,我还必须手动设置令牌(如果您能够获得回调,则可能没有必要这样做,但我还没有探究过这种方式):

JIRA::Client.new(options)

希望这也适合你。

答案 1 :(得分:0)

我没有找到直接解决方案。相反,我遵循了 REST 方法。这很简单。 Atlasssian的api documentation不错。

request_payload = {
  body: body, # Body as JSON
  query: params, # URL Parameters
  headers: {
    'Authorization' => "Basic #{auth_token}",
    'Content-Type' => 'application/json'
  }
}
response = HTTParty.send(:post, url, request_payload)
puts response

请用您的 API 键替换#{auth_token}。希望这会对别人有所帮助。

答案 2 :(得分:0)

因此,GEM构建了基本的auth标头。您所需要做的就是将您的Jira电子邮件用作:username,然后将API令牌用作:password。然后它将进行身份验证。

Oauth方式不适用于Jira Cloud REST API。仅Jira Server兼容。