当我尝试使用iPhone访问rest API时,我在URL中传递了以下参数,并使用了两种方法 POST 和 GET ,但它显示Access Denied
。< / p>
oauth_version="1.0",
oauth_signature_method="HMAC-SHA1",
oauth_nonce="B0dlzkfMWCAn0TJ",
oauth_timestamp="1366280813",
oauth_consumer_key="klkjylsiozbv6vfdsqtuheqo3kmqqzv2",
oauth_token="t9pefrwylmg7webyepsqepotlhzbytkp",
oauth_signature="NeOwbCLUPbIyF9ErnHoFQOl9%2Bwo%3D"
我使用过适用于Firefox和Chrome的REST客户端插件,REST API可以很好地使用REST客户端插件,但无法在iPhone中访问。
我正在为oauth_timestamp,oauth_signature和oauth_nonce生成一个随机值,然后REST API也会显示Access Denied
。
请提供建议。
答案 0 :(得分:1)
//这里final_sign是从以下程序生成的签名。
$nonce = substr(md5(uniqid('nonce_', true)),0,16);
$temprealm="http://magentohost/api/rest/products";
$realm=urlencode($temprealm);
$oauth_version="1.0";
$oauth_signature_method="HMAC-SHA1";
$oauth_consumer_key="dfddfgdgdfgddf6qgygmyvw7e3";
$oauth_access_token="fdgdfgfdgdfg357gimpdnuejvcbtk51ni";
$oauth_method="GET";
$oauth_timestamp=time();
$algo="sha1";
$key="sb88hfdihyg25ipt1by559yzbj2m3861&s7uhaheu8nrx961oxg6uc3os4zgyc2tm"; //consumer secret & token secret //Both are used in generate signature
$data="oauth_consumer_key=".$oauth_consumer_key."&oauth_nonce=".$nonce."&oauth_signature_method=".$oauth_signature_method."&oauth_timestamp=".$oauth_timestamp."&oauth_token=".$oauth_access_token."&oauth_version=".$oauth_version;
$send_data=$oauth_method."&".$realm."&".urlencode($data);
$sign=hash_hmac($algo,$send_data,$key,1); // consumer key and token secrat used here
$fin_sign=base64_encode($sign);
echo $fin_sign;
答案 1 :(得分:0)
根据您的问题,我了解您对签名和 nonce 使用随机值。 后者没问题,但随机签名会导致接收者不信任您作为合法客户。
所以,实际上,你得到你要求的回复(;-))。但这并不能解决你的问题。
您必须为magento系统生成有效签名。