问题描述
我正在对API进行后期调用,该API要求采用这种形式的授权标头
Authorization: "Basic " + BASE64($PUBLICKEY + ":" + HMAC_SHA256(BASE64_WITHOUT_PADDING($REQUEST_BODY),$SECRETKEY))
我尝试的代码:
require 'json'
require 'rest-client'
require 'openssl'
require 'base64'
class Search
attr_reader :results
def initialize
# Base64.urlsafe_encode464(str).gsub('=','')
public_key = ENV['PUBLICKEY']
secret_key = ENV['SECRETKEY']
body = '{"jsonrpc":"2.0","method":"activity.find","params":{"query":{"supplierId":"sup_ee9f3fbe-72b7-4677-8a91-a76c5325b635","activityIds":[],"cursor":null}},"id":1}'
sha256 = OpenSSL::HMAC.digest('sha256',secret_key,Base64.urlsafe_encode64(body,padding: false))
auth = Base64.strict_encode64("#{public_key}:#{sha256}")
# perform request and assign results
@results = RestClient.post(
'https://api.experiencebank.io/v1','{"jsonrpc":"2.0","id":1}',{
Accept: 'application/json',content_type: 'application/json',Authorization: "Basic #{auth}"
}
)
end
end
And this is what I get back
{ "jsonrpc": "2.0","error": { "code": 400,"message": "Signature Mismatch" },"id": 1 }
我认为问题在于在base64中使用授权在无填充的情况下对正文请求进行编码。
有人可以通过授权码帮助我吗??? 该API为https://api.experiencebank.travel/
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)