jira-ruby 插件:传递 API 令牌而不是用户名和密码
jira-ruby plugin : Pass API Token instead of username and password
我正在使用 jira-ruby
Gem.
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 Token。我该怎么做?????
正常工作的正常 curl 命令是:
curl -X GET -H "Authorization: Basic <TOKEN>" "https://<URL HERE>/rest/api/2/issue/<ID>"
我发现文档在这方面确实不清楚。到目前为止,这是对我有用的:
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 手动预授权我的应用程序,因为这是一个脚本,无法通过回调来获取令牌身份验证,因此我使用了 access_token
和access_secret
是这样得到的
在使用 JIRA::Client.new(options)
创建客户端后,我还必须手动设置令牌(如果您能够获得回调,这可能不是必需的,但我还没有探索过这种方式):
client.set_access_token(options[:access_token],options[:access_secret])
希望这对你也有用。
我没有找到针对此问题的直接解决方案。相反,我遵循了 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
请将 #{auth_token}
替换为您的 API 密钥。希望这会对某人有所帮助。
因此 GEM 构造了基本身份验证 headers。您需要做的就是使用您的 Jira 电子邮件作为 :username,然后使用 API 令牌作为 :password。然后它将进行身份验证。
Oauth 方式不适用于 Jira Cloud REST API。只有 Jira Server 兼容。
我正在使用 jira-ruby
Gem.
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 Token。我该怎么做?????
正常工作的正常 curl 命令是:
curl -X GET -H "Authorization: Basic <TOKEN>" "https://<URL HERE>/rest/api/2/issue/<ID>"
我发现文档在这方面确实不清楚。到目前为止,这是对我有用的:
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 手动预授权我的应用程序,因为这是一个脚本,无法通过回调来获取令牌身份验证,因此我使用了 access_token
和access_secret
是这样得到的
在使用 JIRA::Client.new(options)
创建客户端后,我还必须手动设置令牌(如果您能够获得回调,这可能不是必需的,但我还没有探索过这种方式):
client.set_access_token(options[:access_token],options[:access_secret])
希望这对你也有用。
我没有找到针对此问题的直接解决方案。相反,我遵循了 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
请将 #{auth_token}
替换为您的 API 密钥。希望这会对某人有所帮助。
因此 GEM 构造了基本身份验证 headers。您需要做的就是使用您的 Jira 电子邮件作为 :username,然后使用 API 令牌作为 :password。然后它将进行身份验证。
Oauth 方式不适用于 Jira Cloud REST API。只有 Jira Server 兼容。