你们的 api 不 working 啊, Error public_key, github 上面一搜 ucloud,全是韩国 ucloud, 找到的只有 python sdk 和 php sdk, 只好照着仿了一下,即使传进 PUBLIC_KEY 和 access_token, 还是报 Error public_key,没有更详细的信息。文档我就不吐槽什么了, $params['public_key'] = $public_key; $params['access_token'] = verfyAC($private_key,$params); $data = $rest->get("/ufirewall",$params,'json'); verfyAC 未定义,$rest 未定义, 而且又不是所有人都看得懂 php。。 (后来才发现这些方法是你们 php sdk 里的。。)
仿制 verify_ac
def _verfy_ac(private_key, params):
items=params.items()
items.sort()
params_data = "";
for key, value in items:
params_data = params_data + str(key) + str(value)
params_data = params_data+private_key
'''use sha1 to encode keys'''
hash_new = hashlib.sha1()
hash_new.update(params_data)
hash_value = hash_new.hexdigest()
return hash_value
看起来是根据 key sort,然后拼接 sha1, 下面是我的实现,应该也没错啊。
def verify_ac(params)
params = params.clone
params_data = ""
params.sort.each do |key, value|
params_data = params_data + key.to_s + value.to_s
params_data = params_data + UcloudApiClient.private_key
#'''use sha1 to encode keys'''
end
Digest::SHA1.hexdigest params_data
end
(https://github.com/femto/ucloud-ruby-sdk) 只能说你们的 api 完全不 working 了。。