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います。

提案を提供してください。

4

2 に答える 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;
于 2013-05-17T09:29:12.070 に答える
0

あなたの質問から、署名ナンスにランダムな値を使用していることがわかります。後者は問題ありませんが、ランダムな署名により、受信者はあなたを正当なクライアントとして信頼できなくなります。

したがって、実際には、要求した応答が得られます (;-))。しかし、それはあなたの問題を解決しません。

Magento システムの有効な署名を生成する必要があります。

于 2013-04-19T09:11:06.827 に答える