magento REST API 在 iPhone 中无法访问

问题描述 投票:0回答:2

当我尝试使用 iPhone 访问 REST API 时,我在 URL 中传递了以下参数并使用了 POSTGET 这两种方法,但它显示

Access Denied

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

请提供建议。

iphone magento oauth magento-1.7 magento-rest-api
2个回答
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;

0
投票

从您的问题中我了解到您对 signaturenonce 使用了 random 值。 后者没问题,但是“随机签名”会导致接收者不信任您作为合法客户端。 所以,实际上,您得到了您请求的响应 (;-))。但这并不能解决你的问题。

您必须为 magento 系统生成

有效签名

© www.soinside.com 2019 - 2024. All rights reserved.