【问题标题】:magento REST API not accessible in iphoneiphone中无法访问magento REST API
【发布时间】:2013-04-12 13:23:51
【问题描述】:

当我尝试使用 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


    【解决方案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;
    

    【讨论】:

      【解决方案2】:

      根据您的问题,我了解到您对 签名nonce 使用了 random 值。 后者没问题,但随机签名会导致接收者不相信您是合法客户。

      所以,实际上,您得到了您请求的响应 (;-))。但这并不能解决您的问题。

      你必须为magento系统生成一个有效的签名

      【讨论】:

      • 是的,我必须生成我同意您的回答的有效签名,但我的问题是它仍然是“访问被拒绝”我如何使用 AJAX 访问 magento REST API 请给我解决方案...
      • 我的直觉是身份验证有问题,即使您认为不是。完全相同的请求是否可以从浏览器中工作?您可能希望通过 NSLog 将请求写入调试控制台并将其从那里复制到浏览器中。我在我的 REST 请求中发现了令人讨厌的逗号和斜杠。
      • 是的,你是对的,但是如何生成签名请告诉我程序...请
      • Magento 文档没有告诉你吗?对于我使用的 REST,我必须注册才能获得有效签名。
      猜你喜欢
      • 2017-06-03
      • 2023-03-09
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      相关资源
      最近更新 更多