2013-02-28 62 views
0

我正在嘗試編寫一個JIRA-ruby腳本(僅用於從命令行使用)來標記一些自動關閉的JIRA問題。以編程方式從OAuth獲取access_token - 使用JIRA-Ruby gem

我借用here的例子,因爲我使用'jira-ruby'寶石。

但是,它會彈出瀏覽器,要求您單擊「允許」以獲取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支持它,則不會使用。

+0

Hello xbeta。我想要你的幫助。我想用訪問令牌製作CLI。你能給我詳細的描述我怎麼能做到這一點? – 2014-09-12 17:33:37

回答

0

我最初使用的是jira-ruby寶石,但我發現它的性能很差。我最終只是用curl去取代,因爲我只需要那些不那麼臃腫的JSON gem。讓你的吉拉管理員創建,將永遠不會有管理員權限的密碼更改,然後執行以下操作找到「DEMO-1」

require 'json' 

username = "admin" 
password = "abc123" 

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

下面是一個link to the Jira REST API documentation用戶,只要選擇吉拉同一版本的你使用。這將繞過oauth和彈出窗口的任何問題。

+0

謝謝!但我不想使用單一帳戶。我們希望編寫一個工具,讓我們的所有開發人員都可以在自己的帳戶下使用OAuth登錄和執行JIRA任務,這些帳戶可以顯示在歷史記錄中。 – xbeta 2013-10-18 18:19:55

相關問題