使用OAuth2在API中发送Bearer Token的Ruby实现咨询
使用Ruby OAuth2 gem携带Bearer Token发起请求
方式一:直接使用OAuth2 gem封装的方法
既然你已经拿到Bearer Token并存在实例变量@access_token中,无需手动拼接请求头,OAuth2 gem会自动处理认证逻辑:
- 确保已安装OAuth2 gem:
gem install oauth2 # 或者在Gemfile中添加后执行bundle install # gem 'oauth2'
- 完整实现示例:
require 'oauth2' # 替换为你的API基础地址 client = OAuth2::Client.new('', '', site: 'https://your-api-base-url.com') # 用已获取的token初始化AccessToken对象 access_token = OAuth2::AccessToken.new(client, @access_token) # 发起GET请求到目标端点 response = access_token.get('/target-endpoint-path') # 处理响应 if response.status == 200 puts response.parsed # JSON格式响应会自动转为Hash else puts "请求失败:#{response.status} - #{response.body}" end
如果需要发起POST请求,只需替换方法并传入参数:
# 带参数的POST请求示例 response = access_token.post('/target-endpoint-path', params: { key: 'value' })
方式二:基于你提供的Net::HTTP示例手动添加Token
如果坚持用Net::HTTP原生方法,只需在请求头中添加Authorization字段:
require 'net/http' require 'uri' url = URI('https://your-api-base-url.com/target-endpoint-path') req = Net::HTTP::Get.new(url.to_s) # 手动注入Bearer Token到请求头 req['Authorization'] = "Bearer #{@access_token}" # 按需添加其他必要请求头,比如Content-Type req['Content-Type'] = 'application/json' # 执行请求并获取响应 response = Net::HTTP.start(url.host, url.port, use_ssl: url.scheme == 'https') do |http| http.request(req) end # 处理响应内容 puts response.body
内容的提问来源于stack exchange,提问作者tryingToCode716
相关产品推荐
相关产品推荐

