簡體   English   中英

以編程方式從OAuth獲取access_token-使用JIRA-Ruby gem

[英]Programmatically get access_token from OAuth - Using JIRA-Ruby gem

我正在嘗試編寫JIRA-ruby腳本(僅可從命令行使用)以標記某些JIRA問題已自動關閉。

我從這里借一個例子,因為我使用的是“ jira-ruby” gem。

此方法有效,但是它將彈出一個瀏覽器,要求您單擊“允許”以獲取access_token。 我想以編程方式執行此操作,但我不認為該API是為此目的而構建的。 由於access_token每次都會更改,並且此腳本將在cronjob中定期運行,因此我們需要一種方法來執行此操作。 知道我們還有什么其他方法可以做到嗎?

require 'jira'

@jira = JIRA::Client.new({:site => 'http://localhost:2990', :context_path => '/jira', :consumer_key => 'test-jira', :private_key_file => "rsakey.pem"})

if ARGV.length == 0
  # If not passed any command line arguments, open a browser and prompt the
  # user for the OAuth verifier.
  request_token = @jira.request_token
  puts "Opening #{request_token.authorize_url}"
  system "open #{request_token.authorize_url}"

  puts "Enter the oauth_verifier: "
  oauth_verifier = gets.strip

  access_token = @jira.init_access_token(:oauth_verifier => oauth_verifier)
  puts "Access token: #{access_token.token} secret: #{access_token.secret}"
elsif ARGV.length == 2
  # Otherwise assume the arguments are a previous access token and secret.
  access_token = @jira.set_access_token(ARGV[0], ARGV[1])
else
  # Script must be passed 0 or 2 arguments
  raise "Usage: #{$0} [ token secret ]"
end

# Show all projects
projects = @jira.Project.all

projects.each do |project|
  puts "Project -> key: #{project.key}, name: #{project.name}"
end
issue = @jira.Issue.find('DEMO-1')
puts issue

我知道有一種使用長壽命訪問令牌的方法,但如果Jira支持,則不會真正使用。

我最初使用的是jira-ruby寶石,但性能卻很糟糕。 我最終只用curl代替,因為我只需要不那么腫的JSON gem。 讓您的Jira管理員創建一個永遠不會通過管理員權限更改密碼的用戶,然后執行以下操作以找到“ DEMO-1”

require 'json'

username = "admin"
password = "abc123"

issue = JSON.parse(%x[curl -u #{username}:#{password} \"http://jira/rest/api/latest/issue/DEMO-1\"])

這是Jira REST API文檔鏈接 ,只需選擇您使用的相同版本的Jira。 這將繞過oauth和彈出窗口的所有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM